如何获得故障设备的列表?

来源:百度文库 编辑:神马文学网 时间:2024/06/30 20:43:04
问:
嗨,Scripting Guy!在“设备管理器”中,故障的设备总是以黄色的惊叹号为标记。如何可以使用脚本来获取故障设备的列表呢?
-- OL
答:
嗨,OL。有时候在棒球场上,击球手猛力击球,但那球却漂亮地弹起并落入您的手套里。这就是通常所说的“candy hop”。您会发现这个问题就是相当于“candy hop”的脚本编写问题:看起来好像很难回答,结果却发现非常容易。
实际上,WMI 有一个类 (Win32_PNPEntity) 可以返回“设备管理器”中设备的信息。而 Win32_PNPEntity 则有一个属性 (ConfigManagerErrorCode) 可以告诉您某个设备是否正常工作。如果 ConfigManagerErrorCode 的值为 0,那就说明这个设备正常工作。如果 ConfigManagerErrorCode 的值不为 0,则说明可能出了什么故障。以下就是我们关心的部分:任何 ConfigManagerErrorCode 值不为 0 的设备在“设备管理器”中都会有一个黄色的感叹号出现在旁边。
换句话说,为了编写一个返回故障设备列表的脚本,我们只要连接到 Win32_PNPEntity 类,并查询所有 ConfigManagerErrrorCode 值不等于 0 的设备即可:
strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _("Select * from Win32_PNPEntity Where ConfigManagerErrorCode <> 0")For Each objItem in colItemsWscript.Echo "Name: " & objItem.NameNext
那么如果您想要知道计算机上安装的所有设备的详细信息呢?由于这个问题看来比较简单,所以我们打算接着慷慨一把:以下脚本可返回有关已安装设备的所有类型的信息:
strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery("Select * from Win32_PnPEntity")For Each objItem in colItemsWscript.Echo "Class GUID: " & objItem.ClassGuidWscript.Echo "Device is Working: " & objItem.ConfigManagerErrorCodeWscript.Echo "Description: " & objItem.DescriptionWscript.Echo "Device ID: " & objItem.DeviceIDWscript.Echo "Manufacturer: " & objItem.ManufacturerWscript.Echo "Name: " & objItem.NameWscript.Echo "PNP Device ID: " & objItem.PNPDeviceIDWscript.Echo "Service: " & objItem.ServiceNext
不,不用为这个脚本付费。这次我们请客!