对于社区来说,我有一个相当复杂的问题:我必须管理一个拥有数百台运行Win XP SP3的PC的实验室。有时,学生们把键盘和/或鼠标从电脑上断开,所以每堂课后,我都要检查每台机器,检查它们是否已经安装好了,这就占用了我很多时间。因此,我正在用VBScript编写一个脚本,用于检查机器,并将有关配置的信息放入数据库,以帮助我判断机器上是否有问题。现在,我还想检查一下,是否附加了PS2键盘和/或PS2鼠标,这样我就可以在一个新的类启动之前立即恢复它们,而不需要一台机器去尝试。我怎么才能做到这一点?WMI?多么?谢谢。
发布于 2015-10-07 10:58:29
WMI应该能够提供这些信息。有关示例,请参见这个相关的问题。您可能会使用需求 Win32_Keyboard和Win32_PointingDevice,如果这些不要报告断开连接 (我不能测试PS/2硬件),则可能是Win32_PnPEntity。
所有这些都应该转化为VBScript,或许可以使用微软的文档关于来自VBScript的WMI。首先:
On Error Resume Next
For Each strComputer In Array("localhost")
WScript.Echo "Computer: " & strComputer
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Keyboard", "WQL", &h30)
For Each objItem In colItems
WScript.Echo objItem.Availability, objItem.Caption, _
objItem.ConfigManagerErrorCode, objItem.ConfigManagerUserConfig, _
objItem.Description, objItem.DeviceID, _
objItem.ErrorCleared, objItem.ErrorDescription, _
objItem.IsLocked, _
objItem.LastErrorCode, _
objItem.Layout, _
objItem.Name, _
objItem.PNPDeviceID, _
objItem.Status, objItem.StatusInfo, _
objItem.SystemCreationClassName, objItem.SystemName
Next
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PointingDevice", "WQL", &h30)
For Each objItem In colItems
WScript.Echo objItem.Availability, objItem.Caption, _
objItem.ConfigManagerErrorCode, objItem.ConfigManagerUserConfig, _
objItem.Description, objItem.DeviceID, _
objItem.DeviceInterface, _
objItem.ErrorCleared, objItem.ErrorDescription, _
objItem.HardwareType, _
objItem.IsLocked, _
objItem.LastErrorCode, _
objItem.Name, _
objItem.PNPDeviceID, _
objItem.PointingType, _
objItem.Status, objItem.StatusInfo, _
objItem.Synch, _
objItem.SystemCreationClassName, objItem.SystemName
Next
Nexthttps://stackoverflow.com/questions/32964904
复制相似问题