windows - 如何在PowerShell中获取CPU功耗?

标签 windows powershell

有没有办法使用PS获取CPU功耗? Open Hardware Monitor显然有办法返回该数字,但我无法在 OHM's source 中找到相关代码.

最佳答案

我在存储库中搜索了“温度”并找到了这个示例:https://github.com/openhardwaremonitor/openhardwaremonitor/blob/da432ef07cf125c019afd3a27f447da428404611/Hardware/LPC/W836XX.cs

它似乎需要特定于设备的类,例如 OpenHardwareMonitor.Hardware.LPC.W836XX适用于 HP 和 Fujitsu 系统或 OpenHardwareMonitor.Hardware.LPC.F718XX对于F75375例如,许多显卡使用的芯片。这些类知道可以访问数据的 IO 端口和内存地址,因此 Windows(或 PowerShell)中没有标准 API 供所有设备放置其硬件统计信息:因此这种情况非常相似到 20 世纪 90 年代初 DirectSound 和 OpenAL 之前的 PC 声卡。

读取原始数据是通过此文件 ( https://github.com/openhardwaremonitor/openhardwaremonitor/blob/da432ef07cf125c019afd3a27f447da428404611/Hardware/Ring0.cs ) 中的代码完成的,该代码似乎将硬件驱动程序加载到操作系统中,然后使用 IOCtrl ( DeviceIOControl ) 与其交换消息。

驱动程序源代码WinRing0.sys位于同一个存储库中,位于此位置:https://github.com/openhardwaremonitor/openhardwaremonitor/tree/master/External/WinRing0

至于你的实际问题:如果你使用 PowerShell 直接与 .NET 对象交互的能力,你可以通过 PowerShell 获取你想要的数据 - 你只需直接从 PowerShell 中调用 OpenHardwareMonitor 的类方法,但你需要运行具有提升权限的 PowerShell,以便 OpenHardwareMonitor 代码可以安装 Ring0驱动程序使其能够读取每个芯片的值。

更好的想法可能是编写一个 Windows 服务,通过非管理 PowerShell 实例可以读取的某个共享管道公开此数据。

对于 CPU 功耗,低于 Hardware/CPU然后为您系统中的 CPU 选择正确的类别。对于 IntelCPU看看 MSR_RAPL_POWER_UNIT 的使用.

关于windows - 如何在PowerShell中获取CPU功耗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49202065/

相关文章:

c# - 在 Windows 7 上使用 .NET 以编程方式创建/销毁网桥

python - 在新的命令窗口中运行python : windows : Subporcess open a . bat文件并运行

powershell - 如何以逗号分隔的格式提取键值对的值?

xml - PowerShell给出错误 “Object reference not set to an instance object”

powershell - 在Powershell中将自定义对象数组转换为字符串数组

c++ - 以编程方式在 IE 中设置页面缩放和文本大小

windows - 集成 Windows 身份验证 - 对于 Internet 应用程序是否现实?

windows - 需要有关如何使用 InstallShield 2010 将我的应用程序文件扩展名与应用程序相关联的信息

powershell - 在 PowerShell 的 Active Directory 中测试计算机对象是否存在

python - 在 PowerShell 中进行管道传输时,如何确保 Python 打印 UTF-8(而不是 UTF-16-LE)?