使用WQL

时间:2016-08-25 11:25:05

标签: python wmi wql

我可以从WMI获取deviceID,然后我想使用该deviceID来检查天气设备处于启用\禁用状态,如果它的状态是否正常,基本上我想使用WQL来查询该设备稍后使用这个USB设备唯一的DeviceID。这是我使用的代码示例,并使用

获得异常
import wmi
devid = "USB\VID_04F2&PID_B315\6&EF94D1A&0&6"
c = wmi.WMI()
q2 = "SELECT * FROM Win32_PnPEntity WHERE DeviceID = " + devid + " "
dev = c.query(q2)

当我运行此代码时,我收到以下错误:

  

追踪(最近的呼叫最后):
  文件"",第1行,在   文件" C:\ Python27 \ lib \ site-packages \ wmi.py",第1009行,在查询中   在self._raw_query(wql)中为obj返回[_wmi_object(obj,instance_of,fields)]   文件" C:\ Python27 \ lib \ site-packages \ win32com \ client \ util.py",第84行,下一步返回_get_good_object_(self。 iter .next(), resultCLSID = self.resultCLSID)
  pywintypes.com_error:( - 2147217385,' OLE错误0x80041017',无,无)

可能我的wql查询在某种程度上是错误的,你能给我一个组合查询的正确方法的例子吗?

1 个答案:

答案 0 :(得分:0)

\是WQL中的special character,必须使用反斜杠转义,因此devid应为:

devid = "'USB\\VID_04F2&PID_B315\\6&EF94D1A&0&6'"

编辑:我也注意到你没有包装常量,所以我在值周围加了一个引号。