如何从 WMI 对象中提取值并将其存储在变量中?

How can I extract a value from a WMI object and store it in a variable?

我想查询 WMI 并将值存储在某些变量中。结果 returns 一个 WMI 对象,我需要它自己的值。

我考虑过将 WMI 对象转换为字符串,然后搜索它,但这似乎不对。

如果可能的话,我想通过命名 field/caption 来 select 一个值。类似于您可以 select 来自 JSON 对象的值的方式。

一个简短的例子:

import wmi
c = wmi.WMI()

for baseboard in c.Win32_Baseboard(["Product"]):
  print(baseboard)

baseboard_name = baseboard["Product"]
print(baseboard_name)

在上面的例子中,我得到这个错误:

'_wmi_object' object is not subscriptable.

经过大量谷歌搜索后,我找到了一种自行获取任何 WMI 信息的方法(没有列名)。

下面的例子展示了如何获取主板型号:

import win32com.client

wmi_service = win32com.client.Dispatch("WbemScripting.SWbemLocator")
wbem_service = wmi_service.ConnectServer(".", "root\cimv2")
baseboard_items = wbem_service.ExecQuery("SELECT * FROM Win32_Baseboard")

for obj_item in baseboard_items:
  baseboard_name = obj_item.Product

print(baseboard_name)