A lightweight PowerShell script that logs CPU temperature, power draw, per-core temperatures, and the top CPU-using processes to a CSV file. Works on both AMD and Intel CPUs.
- Downloads the latest LibreHardwareMonitor library automatically on first run
- Logs CPU package temperature and individual core temperatures
- Logs CPU package power (watts)
- Captures the top five processes by PerfMon CPU% each sample (raw plus approx. share of PC = raw ÷ logical CPUs)
- Plain CSV output — easy to chart in Excel or Power BI
- No separate installer beyond PowerShell + admin rights
- Windows PowerShell or PowerShell 7
- Run as Administrator (required by the script and performance counters)
- Save
HeatPulse.ps1to a folder on your PC. - Open an elevated terminal and follow Running from PowerShell below.
- Press Win + X.
- Choose Terminal (Admin) or Windows PowerShell (Admin).
cd "C:\path\to\HeatPulse"Replace C:\path\to\HeatPulse with the folder where you saved HeatPulse.ps1.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser.\HeatPulse.ps1You should see:
Monitoring started. Live summary refreshes every 5s. Press Ctrl+C to stop.
Press Ctrl+C to exit cleanly; the CSV path is printed when you stop.
Open HeatPulse_Log_<timestamp>.csv (a new file each run) in Excel or Power BI to build charts.
Per-process figures come from Windows performance counters (Win32_PerfFormattedData_PerfProc_Process / PerfMon-style % Processor Time), not from Task Manager’s UI code.
- PerfMon raw can go above 100% on multi-core CPUs (a threaded process sums time across logical processors). Theoretical ceiling scales with logical CPU count.
- Approx. % of PC (also written ~pc in the dashboard) is
raw ÷ Logical_CPU_Count. That is an approximate “share of the whole machine” comparable to how many people read Task Manager — but still not identical, because Task Manager smooths differently and refreshes on its own cadence. - Samples are taken every 5 seconds at one instant, so brief spikes may look bigger here than Task Manager’s averaged column.
| Column | Description |
|---|---|
Timestamp |
Sample time (yyyy-MM-dd HH:mm:ss) |
CPU_Temp_C |
CPU package-style temperature where available |
CPU_Power_W |
Package power (watts), when reported by sensors |
Core_Temps |
Per-core readings, e.g. `Core #0: 45°C |
Logical_CPU_Count |
Logical processors used for ~pc normalization (same row to row unless hardware changes) |
Top_Processes |
Human summary: top five by raw counter, ~X% pc, raw Y% per process |
CPU_ApproxSystemPct |
Same order as Top_Processes: semicolon-separated approximate % of PC values |
CPU_PerfRaw |
Same order: semicolon-separated PerfMon raw % values |
| File | Purpose |
|---|---|
HeatPulse.ps1 |
Monitoring script |
HeatPulse_Log_<yyyy-MM-dd_HH-mm-ss_fff>.csv |
New log each run |
LibreHardwareMonitorLib.dll |
Downloaded on first run into the same folder as the script |
- First run downloads the LibreHardwareMonitor assets (~ few MB); later runs reuse the DLL.
- Administrator rights are required.
- Always use Ctrl+C to stop so the loop can tear down cleanly and finalize the CSV.