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
| Content | Type | Function |
|---|---|---|
| CPU Temperature Monitor - Create | Script | Create and configure the remote monitor on the end machine. |
| CPU Temperature Monitor - Manage | Client Script | Manages and maintains the remote monitors created on the end machines. |
Monitor
| Content | Type | Function |
|---|---|---|
| Execute Script - CPU Temperature Monitor - Create | Internal Monitor | Executes the above script against the concerned physical Windows machines. |
| CPU Temperature Monitoring Process | Remote Monitor | Performs the monitoring. |
Alert Template
| Content | Type | Function |
|---|---|---|
| △ CUSTOM - Execute Script - CPU Temperature Monitor - Create | Alert Template | Executes the above script against the machines detected by the internal monitor. |
Implementation
-
Import the CPU Temperature Monitor - Create script from the ProSync plugin.
-
Import the CPU Temperature Monitor - Manage script from the ProSync plugin.
-
Import the Execute Script - CPU Temperature Monitor - Create internal monitor from the ProSync plugin.
-
Import the alert template named
△ CUSTOM - Execute Script - CPU Temperature Monitor - Createfrom the ProSync plugin. -
Execute the
CPU Temperature Monitor - Createscript on any online Windows computer. Make sure to set the ‘Set_Environment’ parameter to1. This will create the EDFs and system properties.

-
Reload the system cache and verify the existence of the EDFs and the system property as detailed in the script documentation.
-
Adjust the values in the system properties (or the EDFs) as needed.
-
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.
-
Configure the solution as follows:
- Navigate to Automation --> Monitors within the CWA Control Center and set up the following:
- Execute Script - CPU Temperature Monitor - Create
- Configure with the alert template:
△ CUSTOM - Execute Script - CPU Temperature Monitor - Create - Right-click and Run Now to start the monitor
- Configure with the alert template:
- Execute Script - CPU Temperature Monitor - Create
- Schedule the CPU Temperature Monitor - Manage script to run daily.

- Navigate to Automation --> Monitors within the CWA Control Center and set up the following:
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
| Name | Example | Required | Description |
|---|---|---|---|
| CPUTempMon_Enable_Servers | 1 | True | Enables or disables server monitoring (1 = enabled, 0 = disabled). |
| CPUTempMon_Enable_Workstations | 1 | True | Enables or disables workstation monitoring (1 = enabled, 0 = disabled). |
| CPUTempMon_Interval_Seconds | 300 | True | Remote monitor run interval in seconds. |
| CPUTempMon_Offset | 10 | True | Number of Celsius degrees subtracted from the vendor maximum temperature to calculate the alert threshold. |
| CPUTempMon_AlertTemplate_Servers | 172 | True | Alert template ID used by server monitors. |
| CPUTempMon_AlertTemplate_Workstations | 172 | True | Alert template ID used by workstation monitors. |
| CPUTempMon_TicketCategory_Servers | 124 | False | Ticket category ID used by server monitors. Default is 0 (<Not Specified>). |
| CPUTempMon_TicketCategory_Workstations | 125 | False | Ticket category ID used by workstation monitors. Default is 0 (<Not Specified>). |
| CPUTempMon_AlertStyle | 1 | True | Controls 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
| Name | Example | Type | Description |
|---|---|---|---|
| CPUTempMon_Exclude_Servers | Marked or Unmarked | Check-Box | Excludes all client servers from this solution. |
| CPUTempMon_Exclude_Workstations | Marked or Unmarked | Check-Box | Excludes all client workstations from this solution. |
| CPUTempMon_Offset | 20 | Text | Overrides CPUTempMon_Offset for that client. |
| CPUTempMon_AlertTemplate_Servers | 1 | Text | Overrides CPUTempMon_AlertTemplate_Servers for that client. |
| CPUTempMon_AlertTemplate_Workstations | 1 | Text | Overrides CPUTempMon_AlertTemplate_Workstations for that client. |
| CPUTempMon_TicketCategory_Servers | 124 | Text | Overrides CPUTempMon_TicketCategory_Servers for that client. |
| CPUTempMon_TicketCategory_Workstations | 125 | Text | Overrides CPUTempMon_TicketCategory_Workstations for that client. |
| CPUTempMon_AlertStyle | 1 | Text | Overrides CPUTempMon_AlertStyle for that client. Accepted values: 0 to 10 using the same alert-style map above. |
Location-Level EDF
| Name | Example | Type | Description |
|---|---|---|---|
| CPUTempMon_Exclude_Servers | Marked or Unmarked | Check-Box | Excludes all location servers from this solution. |
| CPUTempMon_Exclude_Workstations | Marked or Unmarked | Check-Box | Excludes all location workstations from this solution. |
Computer-Level EDF
| Name | Example | Type | Description |
|---|---|---|---|
| CPUTempMon_Exclude_Computer | Marked or Unmarked | Check-Box | Excludes 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
TicketCategoryandAlertStylesystem properties. - Added missing client-level EDFs for
TicketCategoryandAlertStyleoverrides.
2026-04-02
- Modified and hosted the
CPUTempMon.exetool 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