首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用python脚本使用WMI -( Windows管理工具)获取远程系统硬件信息

如何使用python脚本使用WMI -( Windows管理工具)获取远程系统硬件信息
EN

Stack Overflow用户
提问于 2020-03-15 12:54:53
回答 1查看 2.7K关注 0票数 0

Aim

要编写一个python脚本,它获取远程主机的一些硬件信息(仅限windows),并且我使用wmi库连接到远程主机硬件信息:

代码语言:javascript
运行
复制
GPU Serial Number
Operating system version
GPU model Name
processor name

我的环境

代码语言:javascript
运行
复制
language - python 3
connecting remote hosts using wmi library (works)
remote hosts operating system: windows 7 or windows 10

问题

当我运行下面的代码时,它会生成100个类/函数,我甚至不知道如何使用它来满足我的需求(获取硬件信息)。

代码语言:javascript
运行
复制
import wmi
conn = wmi.WMI() 
for classes in conn.classes :
    print(classes)

...... ...... ...... Win32\_VideoConfiguration Win32\_LoggedOnUser CIM\_CompatibleProduct Win32\_PnPDevicePropertyReal64Array Win32\_AccountSID MSFT\_NetCircularDependencyDemand CIM\_BootOSFromFS Msft\_WmiProvider\_GetObjectAsyncEvent\_Post Win32\_SystemSystemDriver CIM\_InstIndication ...... ...... ......

最终如何使用wmi库或任何其他可能的方式远程获取远程主机的硬件信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-19 09:54:23

wmi文档针对的是开发人员和IT管理员。您需要知道在哪里找到适当的类及其所需的属性。下面的注释脚本可能会有所帮助。

代码语言:javascript
运行
复制
import wmi
conn = wmi.WMI()         # or # wmi.WMI("some_other_machine")

# Operating system & OS version
for os in conn.Win32_OperatingSystem():
    print( 'OS : ' + os.Caption + ", version " + os.Version )

# Processor name
for pr in conn.Win32_Processor():
    print( 'CPU: ' + pr.Name )

# GPU model Name
# GPU Serial Number - partial solution
for vc in conn.Win32_VideoController():
    print( 'GPU: ' + vc.Name + "\r\n     " + vc.PNPDeviceID )

请注意,只有当硬件制造商实现 be extracted from PNPDeviceID时,才需要注意:

查看PNPDeviceID值,将其拆分为"\“。

  • ,第一个部件,它是总线类型。对我来说,它是PCI.
  • 第二部分描述了卡。有一个供应商代码、型号等。
  • 最后一节包含一个由符号分隔的数字。序列号是该列表中的第二个编号,格式为十六进制.

附加请求:监视器详细信息,如序列号、服务标签、型号名称。

代码语言:javascript
运行
复制
import wmi
conn = wmi.WMI()

# convert uint16[] array to string
def cnvrt( tup ): 
    return ''.join( [chr( x ) if x else '' for x in tup] )

# this is 'universal' DesktopMonitor (no useful details for Generic PnP Monitor?)
for umn in conn.Win32_DesktopMonitor():
    print( 'UMn: Name             {}'.format( umn.Name ) )
    print( 'UMn: PNPDeviceID      {}'.format( umn.PNPDeviceID ) )

# this is 'specific' DesktopMonitor (all useful details?)
con2 =  wmi.WMI(namespace='root/WMI')
for mon in con2.WmiMonitorID():
    print( 'Mon: Active           {}'.format(        mon.Active ) )
    print( 'Mon: InstanceName     {}'.format(        mon.InstanceName ) )
    print( 'Mon: ManufacturerName {}'.format( cnvrt( mon.ManufacturerName ) ) )
    print( 'Mon: ProductCodeID    {}'.format( cnvrt( mon.ProductCodeID    ) ) )
    print( 'Mon: SerialNumberID   {}'.format( cnvrt( mon.SerialNumberID   ) ) )
    print( 'Mon: UserFriendlyName {}'.format( cnvrt( mon.UserFriendlyName ) ) )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60693094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档