Skip to main content

CPU Temperature Monitoring

Purpose

The goal of this solution is to monitor the CPU temperature of physical Windows machines using the Libre Hardware Monitor.

Recently, the underlying LibreHardwareMonitor tool migrated its hardware access driver from Winring0 to PawnIO. Because PawnIO does not support legacy operating systems, this monitoring solution has been updated to exclude older versions of Windows.

Currently Supported Operating Systems:

  • Windows 10 (Version 1809 / Build 17763) and newer
  • Windows 11 (All versions)
  • Windows Server 2019
  • Windows Server 2022
  • Windows Server 2025

Associated Content

Script

ContentTypeFunction
CPU Temperature Monitor - CreateScriptCreate and configure the remote monitor on the end machine.
CPU Temperature Monitor - ManageClient ScriptManages and maintains the remote monitors created on the end machines.

Monitor

ContentTypeFunction
Execute Script - CPU Temperature Monitor - CreateInternal MonitorExecutes the above script against the concerned physical Windows machines.
CPU Temperature Monitoring ProcessRemote MonitorPerforms the monitoring.

Alert Template

ContentTypeFunction
△ CUSTOM - Execute Script - CPU Temperature Monitor - CreateAlert TemplateExecutes the above script against the machines detected by the internal monitor.

Implementation

  1. Import the CPU Temperature Monitor - Create script from the ProSync plugin.

  2. Import the CPU Temperature Monitor - Manage script from the ProSync plugin.

  3. Import the Execute Script - CPU Temperature Monitor - Create internal monitor from the ProSync plugin.

  4. Import the alert template named △ CUSTOM - Execute Script - CPU Temperature Monitor - Create from the ProSync plugin.

  5. Execute the CPU Temperature Monitor - Create script on any online Windows computer. Make sure to set the ‘Set_Environment’ parameter to 1. This will create the EDFs and system properties.
    Image

  6. Reload the system cache and verify the existence of the EDFs and the system property as detailed in the script documentation.
    Image

  7. Adjust the values in the system properties (or the EDFs) as needed.

  8. Run the CPU Temperature Monitor - Create script on a physical Windows machine. Check the configuration and operation of the remote monitor created by the script.

  9. Configure the solution as follows:

Remote Monitor Behavior Controls

Use the following system properties and EDFs to control how monitors are created, how alerts behave, and where tickets are categorized.

System Properties

NameExampleRequiredDescription
CPUTempMon_Enable_Servers1TrueEnables or disables server monitoring (1 = enabled, 0 = disabled).
CPUTempMon_Enable_Workstations1TrueEnables or disables workstation monitoring (1 = enabled, 0 = disabled).
CPUTempMon_Interval_Seconds300TrueRemote monitor run interval in seconds.
CPUTempMon_Offset10TrueNumber of Celsius degrees subtracted from the vendor maximum temperature to calculate the alert threshold.
CPUTempMon_AlertTemplate_Servers172TrueAlert template ID used by server monitors.
CPUTempMon_AlertTemplate_Workstations172TrueAlert template ID used by workstation monitors.
CPUTempMon_TicketCategory_Servers124FalseTicket category ID used by server monitors. Default is 0 (<Not Specified>).
CPUTempMon_TicketCategory_Workstations125FalseTicket category ID used by workstation monitors. Default is 0 (<Not Specified>).
CPUTempMon_AlertStyle1TrueControls alert frequency for failed monitor checks. Numeric map: 0=Continuous, 1=Once (default), 2=Second, 3=Third, 4=Fourth, 5=Fifth, 6=Sixth, 7=Seventh, 8=Eighth, 9=Ninth, 10=Tenth. Non-continuous styles apply only after at least one successful check.

Client-Level EDF

NameExampleTypeDescription
CPUTempMon_Exclude_ServersMarked or UnmarkedCheck-BoxExcludes all client servers from this solution.
CPUTempMon_Exclude_WorkstationsMarked or UnmarkedCheck-BoxExcludes all client workstations from this solution.
CPUTempMon_Offset20TextOverrides CPUTempMon_Offset for that client.
CPUTempMon_AlertTemplate_Servers1TextOverrides CPUTempMon_AlertTemplate_Servers for that client.
CPUTempMon_AlertTemplate_Workstations1TextOverrides CPUTempMon_AlertTemplate_Workstations for that client.
CPUTempMon_TicketCategory_Servers124TextOverrides CPUTempMon_TicketCategory_Servers for that client.
CPUTempMon_TicketCategory_Workstations125TextOverrides CPUTempMon_TicketCategory_Workstations for that client.
CPUTempMon_AlertStyle1TextOverrides CPUTempMon_AlertStyle for that client. Accepted values: 0 to 10 using the same alert-style map above.

Location-Level EDF

NameExampleTypeDescription
CPUTempMon_Exclude_ServersMarked or UnmarkedCheck-BoxExcludes all location servers from this solution.
CPUTempMon_Exclude_WorkstationsMarked or UnmarkedCheck-BoxExcludes all location workstations from this solution.

Computer-Level EDF

NameExampleTypeDescription
CPUTempMon_Exclude_ComputerMarked or UnmarkedCheck-BoxExcludes the individual computer from this solution.

Updating Existing Deployments

If this solution was deployed in your environment before 2026-04-02 and you are now upgrading to the updated CPUTempMon.exe file and associated scripts, make sure those updated components are pushed back out to all applicable machines.

The recommended method is to make a small change to the CPUTempMon_Interval_Seconds system property and then run the CPU Temperature Monitor - Manage script. For example, if the current value is 300, change it to 310 and then execute the Manage script. The Manage script will detect that the existing monitor-set configuration no longer matches the configured values and will automatically run the CPU Temperature Monitor - Create script against the affected machines, forcing the monitor set to be recreated and redeploying the updated files.

If a partner is using the _Automation Directory - Remove Obsolete .ps1 [Change] remote monitor, verify that it is up to date and that its exclusions properly account for CPUTempMon so the deployed files are not removed unintentionally.

FAQ

Q: Is it accurate to state that tickets generated by the remote monitor are automatically closed upon the resolution of the identified issue?

A: Affirmative, tickets are configured to be automatically closed subsequent to the resolution of the associated issue. However, it's important to note that if there are any modifications to the monitor set's configuration during the interval between the generation of the ticket and the resolution of the issue, the auto-closure of tickets will not be executed.

Q: What types of machines should this solution be applied to?

A: This solution is intended for physical Windows machines. The remote monitor is designed with physical Windows endpoints in mind, and the Create script should be used to deploy the monitor set only where CPU temperature monitoring is relevant and supported.

Q: What happens if direct hardware temperature readings are blocked by the device manufacturer or BIOS?

A: CPUTempMon first attempts to read sensors through Libre Hardware Monitor. If that direct method is blocked, it falls back to WMI thermal-zone readings. If both methods are unavailable on the endpoint, the tool returns an empty sensor list instead of failing.

Q: Does CPUTempMon require administrative privileges?

A: Yes. CPUTempMon should be run with Administrator privileges. Without elevation, the utility may return empty sensor arrays because access to hardware sensors and WMI thermal data can be restricted.

Q: When should the CPU Temperature Monitor - Manage script be used after initial deployment?

A: The Manage script should be scheduled to run daily and can also be used whenever configuration values are changed in system properties or EDFs. If it detects that an installed monitor set differs from the configured values, it will trigger the CPU Temperature Monitor - Create script to rebuild the monitor set with the correct configuration.

Q: Why did the CPU Temperature Monitor stop working or deploying on older machines like Windows 7, Windows 8, or Windows Server 2016?

A: The underlying LibreHardwareMonitor tool recently migrated to a new hardware access driver (PawnIO) that does not support legacy operating systems. As a result, the solution now explicitly requires Windows 10 (Build 17763) or Windows Server 2019 and newer to function.

Q: Do I need to manually remove the monitor from older, unsupported operating systems?

A: No manual cleanup is required. The updated CPU Temperature Monitor - Manage script is designed to automatically detect unsupported legacy operating systems and will safely remove the deployed files and monitoring components from them during its regular daily run.

Changelog

2026-06-08

  • Modified scripts and monitor targeting logic to exclude legacy operating systems, enforcing a minimum requirement of Windows 10 (Build 17763) or Windows Server 2019.
  • Added missing TicketCategory and AlertStyle system properties.
  • Added missing client-level EDFs for TicketCategory and AlertStyle overrides.

2026-04-02

  • Modified and hosted the CPUTempMon.exe tool on our file server.
  • Code signed the tool.
  • Code signed the PowerShell scripts used in solution.
  • Added rollout guidance for updating existing deployments.
  • Expanded the FAQ section.

2025-04-10

  • Initial version of the document