Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用WMI-(Windows Management Instrumentation)从python脚本获取远程系统硬件信息_Python_Windows_Network Programming_Wmi_Windows Administration - Fatal编程技术网

如何使用WMI-(Windows Management Instrumentation)从python脚本获取远程系统硬件信息

如何使用WMI-(Windows Management Instrumentation)从python脚本获取远程系统硬件信息,python,windows,network-programming,wmi,windows-administration,Python,Windows,Network Programming,Wmi,Windows Administration,目标 要编写获取远程主机(仅限windows)的某些硬件信息的python脚本,我正在使用wmi库连接到远程主机硬件信息: GPU Serial Number Operating system version GPU model Name processor name 我的环境 language - python 3 connecting remote hosts using wmi library (works) remote hosts operating system: windows

目标

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

GPU Serial Number
Operating system version
GPU model Name
processor name
我的环境

language - python 3
connecting remote hosts using wmi library (works)
remote hosts operating system: windows 7 or windows 10
问题

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

代码

import wmi
conn = wmi.WMI() 
for classes in conn.classes :
    print(classes)
决赛
如何使用wmi库或任何其他可能的方式远程获取远程主机的硬件信息。

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

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 )
请注意,仅当硬件制造商实施时:

查看PNPDeviceID值,用“\”将其拆分

  • 第一件是公共汽车类型。对我来说,这是PCI
  • 第二部分介绍了该卡。有供应商代码、型号等
  • 最后一部分包含一个用符号分隔的数字。序列号是该列表中的第二个数字,格式为十六进制
其他请求:监控序列号、服务标签、型号等详细信息

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 ) ) )

您好,JosefZ可以提取序列号,在windows cmd中,我们使用wmic bios获取serialnumber@praveen
用于连接Win32_Bios()中的bi:print(bi.SerialNumber)
hey@JosefZ,另一个帮助!是否有任何可能的方法提取监视器的详细信息,如(序列号、服务标签、型号名称)。我一直在寻找解决办法,但我回来找你了,先生!答案已更新。请,(下次)问另一个问题,而不是扩展当前主题…
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 ) ) )