【问题标题】:Error while trying to use wmi objects (python)尝试使用 wmi 对象时出错(python)
【发布时间】:2011-03-03 13:41:08
【问题描述】:

我正在尝试编写一个脚本来检测运行该脚本的机器是虚拟机还是物理机,但我不明白错误以及如何修复它。

import wmi

def sys_info():

    objWMIService = wmi.GetObject("winmgmts:\root\cimv2")
    colItems = objWMIService.ExecQuery("Select * from Win32_BaseBoard")

    for objItem in colItems:
        print "inside"
        Manufacturer = objItem.Manufacturer
        if Manufacturer == "Microsoft Corporation":
            print "Virtual Machine"
        else:
            print "Not in one"

错误:

    Traceback (most recent call last):
  File "C:\Documents and Settings\xxx\Desktop\Python\Practice Code\System information\trial.py", line 16, in <module>
    sys_info()
  File "C:\Documents and Settings\xxx\Desktop\Python\Practice Code\System information\trial.py", line 5, in sys_info
    objWMIService = wmi.GetObject("winmgmts:""\root\cimv2")
  File "C:\Python26\lib\site-packages\win32com\client\__init__.py", line 72, in GetObject
    return Moniker(Pathname, clsctx)
  File "C:\Python26\lib\site-packages\win32com\client\__init__.py", line 87, in Moniker
    moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)
com_error: (-2147217375, 'OLE error 0x80041021', None, None)

我希望有人可以提供帮助,我对 python 还很陌生。谢谢。

【问题讨论】:

    标签: python wmi


    【解决方案1】:

    如果你改变,事情会有所改善:

    objWMIService = wmi.GetObject("winmgmts:\root\cimv2") 
    

    objWMIService = wmi.GetObject(r"winmgmts:\root\cimv2") 
    

    “\root”中的“\r”序列将在您的代码中被解释为&lt;CR&gt; 字符。您要么必须加倍 '\' 来转义它们,因此它们将被视为反斜杠,或者在第一个双引号之前加上 'r'(就像我所做的那样),以向 Python 表明这应该是“原始”字符串字面量。原始字符串与常规字符串没有什么不同,但原始字符串语法告诉 Python 编译器解释反斜杠。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多