【发布时间】:2010-05-27 09:54:54
【问题描述】:
我有以下 VBScript:
SET Wmi = GetObject("winmgmts:\\.\root\cimv2")
SET QR = Wmi.ExecQuery("SELECT * FROM Win32_Processor")
MsgBox("" & QR.Count)
效果很好。但是,当我查询不存在的东西时:
SET Wmi = GetObject("winmgmts:\\.\root\cimv2")
SET QR = Wmi.ExecQuery("SELECT * FROM Win32_DoesNotExist")
MsgBox("" & QR.Count)
我收到以下错误消息:
Script: E:\test.vbs
Line: 3
Char: 1
Error: Invalid class
Code: 80041010
Source: SWbemObjectSet
如何知道QR 对象是否有效?
如果我打电话给TypeName(QR),它会说SWbemObjectSet,但是一旦我尝试查询它的一个属性,它就会失败并显示上述消息。
我已经用谷歌搜索了这个错误,大多数页面似乎都说了“不要做那个查询”的意思。不幸的是,这不是一个选项,因为我想在多个版本的 Windows 上运行相同的脚本,而且微软偶尔会在新版本的 Windows 中弃用 WMI 类。我希望我的脚本能够优雅地处理它。
【问题讨论】: