4
我有下面的VBScript:VBScript:如何檢查SWbemObjectSet的有效性?
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類。我希望我的腳本能夠優雅地處理它。
是的,有點潰敗,但它有伎倆。謝謝! – jqno 2010-05-27 13:51:26
在某些情況下,'.Count'屬性仍然會拋出基本不可捕獲的錯誤(例如,在沒有連接監視器時查詢WMIMonitorID)。在函數中包裝'.Count'是一個不錯的工作。 – Tim 2016-10-19 19:02:50