А АSaturday, 21 October 2023

Мониторинг температуры в Powershell.

Всем привет.

Возвращаясь к мониторингу температуры решил я попробовать измерить сие напрямую через Powershell. Тем более что в Powershell для этого есть класс MSAcpi_ThermalZoneTemperature. 

Код функции Get-Temperature гуляет по сети не первый год:

 function Get-Temperature {

    $t = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi"

    $returntemp = @()

    foreach ($i in 0..($t.Count - 1)) {

        $temperatureInstance = $t[$i]

        $currentTempKelvin = $temperatureInstance.CurrentTemperature / 10

        $currentTempCelsius = $currentTempKelvin - 273.15

        $currentTempCelsius = [math]::Round($currentTempCelsius, 2)

        $currentTempFahrenheit = (9/5) * $currentTempCelsius + 32

        $instanceName = $temperatureInstance.InstanceName

        $returntemp += "$instanceName : $currentTempCelsius C"

    }

    return $returntemp

}

Get-Temperature

А вот и ее вывод:


Что-то я сомневаюсь  в правдивости таких данных. Берем для сравнения данные по температуре CPU из утилиты AIDA и HWMonitor. Как видите разница есть, более того вывод  функции Get-Temperature не меняется во времени, что как минимум странно.



Что еще? Оказалось что в Windows 11 вызов Get-WMIObject уже не поддерживается. Как все печально, придется оставаться на использовании утилиты OpenHardwareMonitorReport для измерения показателей температуры на лету в Zabbix, а так хотелось все сделать красиво.

Такие дела.


No comments:

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное