方正好强 发表于 2020-12-2 01:41

[Powershell] 无需安装软件,通过命令行监控 CPU 温度

本帖最后由 方正好强 于 2020-12-2 12:19 编辑

新人,初临宝地。如有违规问题,还请管理同学指正,万分感谢!
有小伙伴们在评论中回复到“这个方法没用,不对”,看看他们的方法。我对这方面也一知半解。

我们知道 Windows 电脑没有监控 CPU 温度的功能,如果想知道 CPU 温度需要安装软件,比如鲁大师。
那么是否可以不安装软件,就实现 CPU 的温度监控呢?
有的!经查询资料,找到了方法。

废话不多说,见代码:

function Get-Temperature {
    $t = Get-WmiObject MSAcpi_ThermalZoneTemperature -Namespace "root/wmi"
    $returntemp = @()

    foreach ($temp in $t.CurrentTemperature)
    {
    $currentTempKelvin = $temp/10
    $currentTempCelsius = $currentTempKelvin - 273.15

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

    $returntemp += $currentTempCelsius.ToString() + " C : " + $currentTempFahrenheit.ToString() + " F : " + $currentTempKelvin + "K"
    }
    return $returntemp
}

Get-Temperature

如果需要继续查看:输入 Get-Temperature 并回车即可。
如果喜欢,请支持。

倾何 发表于 2020-12-2 09:24

WMI可以取得ACPI定义中的Thermal Zone中的_TMP的温度内容,但是这个不是cpu的温度,而是主板温区的温度,而且CPU的温度应该直接访问寄存器得到。但软件都在ring3上,要读取寄存器的内容,需要通过ring 0的驱动程序,这个很简单,像鲁大师等软件为了访问底层信息都有驱动程序配套。难点是这些信息有些是MSR,有些在PCI配置空间中,需要根据CPU型号进行判断。所以楼主这个代码并不准确,正确方法应该是驱动然后读取。

倾何 发表于 2020-12-2 09:32

https://stackoverflow.com/questions/39738494/get-cpu-temperature-in-cmd-power-shell你是看的这篇吧,下面回复你仔细看下,这个不是cpu温度

phlebotomy 发表于 2020-12-2 01:50

太厲害了吧

cqj82815 发表于 2020-12-2 08:00

这技术可以啊

hfxiang 发表于 2020-12-2 08:08

试了一下,楼主的方法还真神奇,感谢

梦入神机 发表于 2020-12-2 08:13

电脑里有温度传感器吗?为什么能检测温度

IT_K 发表于 2020-12-2 08:20

梦入神机 发表于 2020-12-2 08:13
电脑里有温度传感器吗?为什么能检测温度

应该有吧要不怎么设置温度墙呢高温降频什么的

龍謹 发表于 2020-12-2 08:20

膜拜大神,原来BAT也能这样玩。

你是神 发表于 2020-12-2 08:27

代码贴出来吧

fsrank 发表于 2020-12-2 08:30

获得新方法, 谢谢分享

orisine 发表于 2020-12-2 08:42

感谢楼主分享
页: [1] 2 3
查看完整版本: [Powershell] 无需安装软件,通过命令行监控 CPU 温度