2017-01-22 109 views
2

有時會出現沒有顯示溫度傳感器的情況。我使用Powershell來讀取值並且經常運行。我想知道爲什麼Windows有時不會返回任何內容。那是在我的筆記本電腦,軟件還是什麼?Windows Powershell有時不會輸出任何值(溫度傳感器)

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

回答

4

實際的類是MSAcpi_ThermalZoneTemperature。使用以下功能:

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" 
} 

備選:

$strComputer = "." 

$objWMi = get-wmiobject -namespace root\WMI -computername localhost -Query "Select * from MSAcpi_ThermalZoneTemperature" 

foreach ($obj in $objWmi) 
{ 
    write-host "Active:" $obj.Active 
    write-host "ActiveTripPoint:" $obj.ActiveTripPoint 
    write-host "ActiveTripPointCount:" $obj.ActiveTripPointCount 
    write-host "CriticalTripPoint:" $obj.CriticalTripPoint 
    write-host "CurrentTemperature:" $obj.CurrentTemperature 
    write-host "InstanceName:" $obj.InstanceName 
    write-host "PassiveTripPoint:" $obj.PassiveTripPoint 
    write-host "Reserved:" $obj.Reserved 
    write-host "SamplingPeriod:" $obj.SamplingPeriod 
    write-host "ThermalConstant1:" $obj.ThermalConstant1 
    write-host "ThermalConstant2:" $obj.ThermalConstant2 
    write-host "ThermalStamp:" $obj.ThermalStamp 
    write-host 
    write-host "########" 
    write-host 
} 

參考鏈接:Thermal Zone Info

希望它能幫助。

+2

如果你有多個CPU,'Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace「root/wmi」'會返回多個實例,你的函數會拋出一個異常,試圖將一個數組除以10.除此之外,非常好知道,謝謝。 –

+0

@LievenKeersmaekers:然後arraylist應該做的工作,也試試趕:) –