Last active
July 28, 2024 20:10
-
-
Save jeffa00/9577816 to your computer and use it in GitHub Desktop.
Get CPU Temperature With PowerShell
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Please note that this is quite old at this point and may or may not work for you. I leave it here for historical purposes | |
# and just in case it can help someone. I think I may have been using Windows 7 when I wrote this. | |
function Get-Temperature { | |
$t = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi" | |
$currentTempKelvin = $t.CurrentTemperature / 10 | |
$currentTempCelsius = $currentTempKelvin - 273.15 | |
$currentTempFahrenheit = (9/5) * $currentTempCelsius + 32 | |
return $currentTempCelsius.ToString() + " C : " + $currentTempFahrenheit.ToString() + " F : " + $currentTempKelvin + "K" | |
} | |
# Save in your c:\users\yourName\Documents\WindowsPowerShell\modules\ directory | |
# in sub directory get-temperature as get-temperature.psm1 | |
# You **must** run as Administrator. | |
# It will only work if your system & BIOS support it. If it doesn't work, I can't help you. | |
# Just type get-temperature in PowerShell and it will spit back the temp in Celsius, Farenheit and Kelvin. | |
# More info on my blog: http://ammonsonline.com/is-it-hot-in-here-or-is-it-just-my-cpu/ |
Hi!
I'd like to track CPU hogs over a day and get output in the following format. Unfortunately I have no Power Shell knowledge. Could you throw together something based on the snippets already here? I think this would be really useful for many people.
Pseudo:
while(TRUE)
for each process that uses more than 5% cpu
print datetime + cputemp + process.cpu + process.path
sleep(5)
2020-05-01 12:34:56 34C 15% C:\Program Files\Microsoft Office\msword.exe
2020-05-01 12:34:56 34C 11% C:\Program Files\Microsoft Office\msexcel.exe
2020-05-01 12:41:10 37C 7% C:\Program Files\Microsoft Office\mspoint.exe
Doesn't seem to work on Winblows nowadays (At least 11, possibly 10). That's using PowerShell && pwsh:
Get-WmiObject : Not supported
Doesn't seem to work on Winblows nowadays (At least 11, possibly 10). That's using PowerShell && pwsh:
Get-WmiObject : Not supported
It depends on the hardware you have, some will not have this object.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
To all the people that have some trouble with it returning negatives values:
From what i understood, " Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi" " can return more than one value, that is why we should get the information in an array.
I changed :
$t = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi"
into :
$t = (Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi")[0]
And it now return the right value (37,05°c for me here).
Sorry for my poor english and maybe a bit late answer, but i hope it will help next ones !