gpt4 book ai didi

VBScript:如何检查 SWbemObjectSet 的有效性?

转载 作者:行者123 更新时间:2023-12-04 18:23:12 27 4
gpt4 key购买 nike

我有以下 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 上运行相同的脚本,而 Microsoft 偶尔会在新版本的 Windows 中弃用 WMI 类。我希望我的脚本能够优雅地处理它。

最佳答案

编辑;
.Count似乎适用于模式查询;

dim testNs: testNs = "Win32_DoesNotExist"
dim colClasses: set colClasses = Wmi.ExecQuery("Select * From Meta_Class where __Class = """ & testNs & """")
msgbox colClasses.count

您可以包装-n-trap 访问错误;
SET QR = Wmi.ExecQuery("SELECT * FROM Win32_DoesNotExist")

dim i: i = getCount(QR)

if (i < 0) then
msgbox "oopsy"
else
msgbox "count is " & i
end if

function getCount(wmiCol)
on error resume next
getCount = QR.Count
if (err.number <> 0) then getCount = (-1)
on error goto 0
end function

关于VBScript:如何检查 SWbemObjectSet 的有效性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2920059/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com