当我查询Win32_PnPEntity,我的PS / 2设备总是显示为 …为什么?

我正在使用WMI查询作为一般诊断脚本的一部分,我查询以下内容:

strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_PnPEntity",,48) For Each objItem in colItems Wscript.Echo "-----------------------------------" Wscript.Echo "Win32_PnPEntity instance" Wscript.Echo "-----------------------------------" Wscript.Echo "Caption: " & objItem.Caption Wscript.Echo "ClassGuid: " & objItem.ClassGuid Wscript.Echo "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode Wscript.Echo "Description: " & objItem.Description Wscript.Echo "DeviceID: " & objItem.DeviceID Wscript.Echo "Manufacturer: " & objItem.Manufacturer Wscript.Echo "Name: " & objItem.Name Wscript.Echo "PNPDeviceID: " & objItem.PNPDeviceID Wscript.Echo "Service: " & objItem.Service Wscript.Echo "Status: " & objItem.Status Next 

每当我在PS / 2端口的工作站上运行这个时,我得到一个PS / 2键盘和鼠标(不存在)显示[不存在,不工作,没有安装驱动程序]的错误代码。

有什么办法可以将其与其他实际上失败的设备区分开来吗? 我想仍然显示PS / 2错误,如果可能的话,但不知道我可以用什么来分开这些从真正的条目。

Win32_PnPEntity WMI类表示即插即用设备的属性。

PS / 2接口可以追溯到1987年,之前就有即插即用之类的东西。

也就是说,看看上面链接的类定义。 可用性和ConfigManagerErrorCode成员将其分解为相当精细的状态码。 也许他们可以用来区分你的PS / 2设备。 (你可能已经在做)。你也可以尝试用Win32_PointingDevice和Win32_Keyboard来交叉引用这些数据。 让你的工作更加努力,但这可能是你从WMI获得的最好的结果。