如何使用 WMI 執行非同步Configuration Manager查詢
在Configuration Manager中,您會藉由呼叫SWbemServices物件ExecQueryAsync方法,以及實作接收方法來處理查詢結果,來執行Configuration Manager物件的同步查詢。
若要處理每個傳回的物件,請建立 objWbemSink.OnObjectReady 事件副程式。 若要在查詢完成時收到通知,請建立 objWbemSink.OnCompleted 事件副程式。
注意事項
非同步查詢中不會傳回延遲屬性。 如需詳細資訊,請參閱 如何使用 WMI 讀取延遲屬性。
執行非同步查詢
設定與 SMS 提供者的連線。 如需詳細資訊,請參閱How to Connect to an SMS Provider in Configuration Manager by Using WMI。
建立 OnObjectReady 副程式,以依查詢處理物件。
建立 OnCompleted 副程式來處理查詢完成。
使用您從步驟一取得的 SWbemServices物件,使用ExecQueryAsync物件以非同步方式查詢Configuration Manager物件。
範例
下列 VBScript 程式碼範例會以非同步方式查詢所有 SMS_Collection 物件。
如需呼叫範例程式碼的相關資訊,請參閱呼叫Configuration Manager程式碼片段。
Dim bdone
Sub QueryCollection(connection)
Dim sink
bdone = False
Set sink = WScript.CreateObject("wbemscripting.swbemsink","sink_")
' Query for all collections.
connection.ExecQueryAsync sink, "select * from SMS_Collection"
' Wait until all instances are returned.
While Not bdone
wscript.sleep 1000
Wend
End Sub
' The sink subroutine to handle the OnObjectReady
' event. This is called as each object returns.
Sub sink_OnObjectReady(collection, octx)
WScript.Echo "CollectionID: " + collection.CollectionID
WScript.Echo "Name: " + collection.Name
Wscript.Echo
End Sub
' The sink subroutine to handle the OnCompleted event.
' This is called when all the objects are returned.
' The oErr parameter obtains an SWbemLastError object,
' if available from the provider.
Sub sink_OnCompleted(HResult, oErr, oCtx)
WScript.Echo "All collections returned"
bdone = true
End Sub
此範例方法具有下列參數:
參數 | Type | 描述 |
---|---|---|
connection |
SWbemServices | SMS 提供者的有效連線。 |
另請參閱
Windows Management Instrumentation
物件概觀如何使用 WMI 呼叫Configuration Manager物件類別方法
如何使用 WMI 在 Configuration Manager 中連線到 SMS 提供者
如何使用 WMI 建立Configuration Manager物件
如何使用 WMI 刪除Configuration Manager物件
如何使用 WMI 修改Configuration Manager物件
如何使用 WMI 執行同步Configuration Manager查詢
如何使用 WMI 讀取Configuration Manager物件
如何使用 WMI 讀取延遲屬性
Configuration Manager擴充 WMI 查詢語言
Configuration Manager結果集
Configuration Manager特殊查詢
關於查詢