2

I'm trying to retrieve the intel PCH temperature with powershell. I cannot find any way to retrieve this temperature using wmi. The chipset on my machine is HM77. I've tried reading through the data sheet provided on the intel site, but to no success. Does anyone know how to do this?

Thanks.

Note: I can read this intel PCH temperature sensor through the HWINFO application, so it can be done somehow.

MrPear
  • 21
  • 1
  • 2
  • Also on a sidenote - does anyone know the rough temp the hm77 chipset can go up to and stay at without any physical damage? – MrPear Feb 19 '14 at 15:25

3 Answers3

2

You can get current temperature for all the sensors of your motherboard using this command

Get-WmiObject -Class Win32_PerfFormattedData_Counters_ThermalZoneInformation |Select-Object Name,Temperature

Your Output should look similar to this based on Sensors available in your system.

Name      Temperature
----      -----------
\_TZ.PCHZ         400
\_TZ.BATZ         273
\_TZ.LOCZ         334
\_TZ.EXTZ         327
\_TZ.GFXZ         335
\_TZ.CPUZ         337

Edited (30/April/2016)

For those who are using CommandLine and can use

wmic /namespace:\\root\cimv2 PATH Win32_PerfFormattedData_Counters_ThermalZoneInformation get Temperature

All the temperatures are in kelvin you can easily convert them to °C or ° F

Ashish
  • 1,309
  • 1
  • 11
  • 17
1

I think I got it. In powershell command line I typed wmic and I entered "wmic:root\cli>" prompt. Then I typed temperature, and it listed all sensors with their DeviceIDs. In CreationClassName it says "Win32_TemperatureProbe".

Now you just need to find the right property to read temp. They're explained here: Win32_TemperatureProbe class

PS script to list all the properties with values:

$probes = Get-WmiObject -class Win32_TemperatureProbe
foreach($probe in $probes) {
    Write-Host $probe
    $probe | Format-List -Property *
}

I didn't find my MB temp, because I have two sensors on my motherboard and I don't know which is which, and I don't have time to read the documentation, but this should get you started.

AdamL
  • 12,421
  • 5
  • 50
  • 74
  • 2
    I don't think that this is possible through WMI. The MSDN documentation says "Real-time readings for the CurrentReading property cannot be extracted from SMBIOS tables. For this reason, current implementations of WMI do not populate the CurrentReading property. The CurrentReading property's presence is reserved for future use." :-( – HAL9256 Feb 19 '14 at 18:37
  • @HAL9256 You're right, and it says that in first sentence on the site I posted :). Bummer. Well, let's wait for some future release. – AdamL Feb 19 '14 at 18:42
  • Yup, I read that too and was like "TemperatureProbe, Sweet!.... oh wait... "future release" ... aaawww nuts. But besides that, you posted an awesome answer, well documented, referenced the MSDN, complete script; that got my upvote! – HAL9256 Feb 19 '14 at 18:53
  • Thanks for your reply! So I have already taken a look at the win32 classes, and could not find anything related to the actual motherboard temperature sensors. I did some more digging, and it seems like depending on the manufacturer, sometimes the sensor is not exposed (or exposed differently) to WMI. Any other ideas are very welcome! (looks like in the time it took me to write this reply, 3 people snuck in first :) ) – MrPear Feb 19 '14 at 18:59
1

To use PowerShell, you would probably have to do it through WMI (i.e. @frikozoid's very good answer). Unfortunately it's not is possible to get the temperature reading through WMI. The MSDN documentation says

"Real-time readings for the CurrentReading property cannot be extracted from SMBIOS tables. For this reason, current implementations of WMI do not populate the CurrentReading property. The CurrentReading property's presence is reserved for future use."

:-(

The reasoning is that each mother board manufacturer has different ways of returning temperature values which would need motherboard specific dll's, etc....

The easiest tool I found for monitoring motherboard temperatures is SpeedFan. It supports almost every motherboard out there, and is pretty easy to use.

As for Temperature, you generally want your chipset to stay below 60 C. CPU temps could go up to 70C, as well as GPU's. In general if you can keep everything below 60C things will run very well for a long time. I know on my system if my GPU went above 70C, things started to get funky, and usually the system would crash.

---Edit---

It looks like you may be able to do part of that through SpeedFan. SpeedFan has a way to configure events (see: Configure Events) So you can set it to execute a script when your temperature hits a certain value.

HAL9256
  • 12,384
  • 1
  • 34
  • 46
  • Thanks for your reply, my goal is to write a powershell script to control my clock speeds. My mobo heats up much more (goes up to 95) than my cpu or gpu (which both max out at only 60-65), because of lack of cooling on the motherboard (this is a laptop). Thus, the limiting factor in my laptop are my PCH temps, and I wish to write a script to monitor it directly and modify my clock speeds thus. (I am modifying my clock speeds by simply changing the power settings states). Any ideas of any way to get the motherboard temperature to PS would be great. Are there any ways of retriving from SpeedFan? – MrPear Feb 19 '14 at 19:05
  • Good tip, but unfortunately speedfan is unable to monitor the pch temps on my motherboard :( good to keep in mind for the future. If you have any other ideas that would be fabulous. – MrPear Feb 21 '14 at 02:32