从win32com.client.CDispatch对象中获取命名元组变量



我正在尝试使用pywin32的win32com模块为给定的Windows机器获取有关系统的一些信息。

例如,这个脚本可以找到一个系统可能有多少CPU套接字,并告诉我每个套接字上有多少物理和逻辑内核。

import win32com.client
winmgmts_root = win32com.client.GetObject("winmgmts:root\cimv2")
cpus = winmgmts_root.ExecQuery("Select * from Win32_Processor")
for cpu in cpus:
print(cpu.NumberOfCores)
print(cpu.NumberOfLogicalProcessors)

问题是,当我试图查看循环中的cpu对象时,这些变量并不存在:

for cpu in cpus:
for name in dir(cpu):
value = getattr(cpu, name)
print("name: {}".format(name))
print("value: {}".format(value))

这产生了大量以_开头的方法,因此不应该使用它们,并且没有指示命名元组变量NumberOfCoresNumberOfLogicalProcessors的来源,即使我可以确认它们的存在。

如何获取这些命名元组变量的列表?

我是个傻瓜-cpus对象中的cpu变量具有Win32_Processor类中定义的命名元组。

https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-processor

最新更新