3

我正在尝试通过 PowerShell 访问 Windows WMI 中可用的一些数据。我认为这将是在可能转向 C 之前学习基础知识的一个简单起点。

最终,我想从 Open Hardware Monitor 查询一个(未记录的)WMI API。这是 Jens 在这里提出的解决方案的一部分:如何获得 CPU 温度?

但是,我完全迷路了。 我将如何首先加载 DLL 然后查询它?

作为初学者,我从 get-wmiobject -list 找到了这个列表

CIM_传感器
CIM_BinarySensor
CIM_MultiStateSensor
CIM_DiscreteSensor
CIM_NumericSensor
CIM_TemperatureSensor
Win32_TemperatureProbe
CIM_转速表
CIM_VoltageSensor
Win32_VoltageProbe
CIM_CurrentSensor
Win32_CurrentProbe

不幸的是, get-wmiobject -class XX在其中任何一个上运行都不会返回任何结果。我希望能够询问传感器。 任何人都可以向我展示基础知识或将我链接到教程吗?

4

2 回答 2

2

如果您正在研究 Server 2012 或 Windows 8 机器,PowerShell v3 可能会为您提供更多功能。

否则,问题已经在您的文本中,它们通常没有记录或记录不充分。

我运行了 Get-WMIObject -Class CIM_Sensor 和 Win32_TemperatureProbe 并取回了数据,但我也没有得到其他一些数据。

要找到其他可能更有用的方法,您可以尝试以下一些方法:

    Get-WmiObject -NameSpace 'root\wmi'
    Get-WmiObject -Class CLASSNAME | Get-Member
    (Get-WmiObject -List CLASSNAME -Amended).Qualifiers

可能进一步研究 WMI 很重要,因为 Win32_ 类是 Microsoft 提供的,通常更容易处理。我使用了很多 WMI,但更多用于文档,检查操作系统,或者让它做一些事情,而不是直接指向硬件、传感器等。

一些可能也有用的网站:

http://www.dmtf.org/standards/wbem

http://collaboration.opengroup.org/pegasus/

https://en.wikipedia.org/wiki/Windows_Management_Instrumentation

希望这至少可以为您提供更多信息来工作,或者让您根据您正在寻找的内容来思考更多的东西。

于 2012-10-12T04:34:51.360 回答
0

有一个名为 wmiexplorer 的 exe,它将列出所有 WMI 类和每个类的属性。它有一个简单的 GUI,在查找您需要的属性时非常有用。

它还显示了相应的查询,您也可以进行试验。当我不知道要使用哪个 WMI 类时,我发现它非常有用。

你可以在这里找到更多信息

于 2013-07-16T17:33:15.227 回答