VBScript WMI PnPEntity 获取 HardwareID
VBScript WMI PnPEntity obtaining HardwareID
我希望使用 VBScript 从安装在系统上的每个设备中提取 hardwareID。
我可以从 PnPEntity class 中提取大部分属性,但是 HardwareId 或 CompatibleId 似乎确实会造成麻烦 - 我假设是因为它可能 returns 一个数组。
我的脚本如下:
Set TxtDriverOutput = objFSO.CreateTextFile("C:\Program Files\xxx\drivers.log", 8, True)
Set objWMIService = GetObject("winmgmts:\.\root\cimv2")
txtDriverOutput.WriteLine Now() & Chr(32) & "Begin HardwareID WMI Query"
txtDriverOutput.WriteLine "----------------------------------------------------------------------------"
txtDriverOutput.WriteLine ""
Set colsHardwareID = objWmiService.ExecQuery("Select * from Win32_PnPEntity")
For Each objItem In colshardwareID
For Each StrHardwareID In objItem.HardwareID
txtdriveroutput.WriteLine StrHardwareID
Next
Next
当我 运行 脚本时,我看到一个硬件 ID 填充到文本文件中 - 然后我在我的第二个 for 循环的行上得到 Error: Object is not a collection
标记(有时我已经看到它出于某种原因在它出错后标记该行,所以可能会带一点盐。
我尝试使用 ObjItem.HarwareID.count、UBound(ObjItem.HardwareID) 以防 PnP 设备没有硬件 ID(不确定是否可能)。谁能指出我正确的方向?谢谢!
我终于弄明白了。
我必须使用以下内容:
For Each objItem In colshardwareID
If Not IsNull(objItem.HardwareID) Then
For Each StrHardwareID In objItem.HardwareID
ReDim Preserve ArrHardwareID(i)
ArrHardwareID(i) = strHardwareID
i = i + 1
Next
End If
Next
正如预期的那样——集合是空的。 .count 或 .isempty 无效,它必须是 IsNull。
我希望使用 VBScript 从安装在系统上的每个设备中提取 hardwareID。
我可以从 PnPEntity class 中提取大部分属性,但是 HardwareId 或 CompatibleId 似乎确实会造成麻烦 - 我假设是因为它可能 returns 一个数组。
我的脚本如下:
Set TxtDriverOutput = objFSO.CreateTextFile("C:\Program Files\xxx\drivers.log", 8, True)
Set objWMIService = GetObject("winmgmts:\.\root\cimv2")
txtDriverOutput.WriteLine Now() & Chr(32) & "Begin HardwareID WMI Query"
txtDriverOutput.WriteLine "----------------------------------------------------------------------------"
txtDriverOutput.WriteLine ""
Set colsHardwareID = objWmiService.ExecQuery("Select * from Win32_PnPEntity")
For Each objItem In colshardwareID
For Each StrHardwareID In objItem.HardwareID
txtdriveroutput.WriteLine StrHardwareID
Next
Next
当我 运行 脚本时,我看到一个硬件 ID 填充到文本文件中 - 然后我在我的第二个 for 循环的行上得到 Error: Object is not a collection
标记(有时我已经看到它出于某种原因在它出错后标记该行,所以可能会带一点盐。
我尝试使用 ObjItem.HarwareID.count、UBound(ObjItem.HardwareID) 以防 PnP 设备没有硬件 ID(不确定是否可能)。谁能指出我正确的方向?谢谢!
我终于弄明白了。
我必须使用以下内容:
For Each objItem In colshardwareID
If Not IsNull(objItem.HardwareID) Then
For Each StrHardwareID In objItem.HardwareID
ReDim Preserve ArrHardwareID(i)
ArrHardwareID(i) = strHardwareID
i = i + 1
Next
End If
Next
正如预期的那样——集合是空的。 .count 或 .isempty 无效,它必须是 IsNull。