我有以下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类。我希望我的脚本能够优雅地处理这个问题。