如何使用 Managed 程式碼執行非同步Configuration Manager查詢
在Configuration Manager中,若要使用受控 SMS 提供者執行非同步查詢,請使用ProcessQuery方法。
ProcessQuery方法的第一個參數是SmsBackgroundWorker類別的實例,可提供兩個事件處理常式:
QueryProcessObjectReady。 查詢所傳回的每個物件都會呼叫此事件處理常式。 事件處理常式會提供代表 物件的 IResultObject 物件。
QueryProcessCompleted。 查詢完成時,會呼叫此事件處理常式。 它也會提供發生任何錯誤的相關資訊。 如需詳細資訊,請參閱如需錯誤處理的相關資訊,請參閱如何使用 Managed 程式碼來處理Configuration Manager非同步錯誤。
ProcessQuery方法的第二個參數是查詢的 WQL 語句。
執行非同步查詢
設定與 SMS 提供者的連線。 如需詳細資訊,請 參閱 SMS 提供者基本概念。
建立 SmsBackgroundWorker 物件,並以回呼方法名稱填入 QueryProcessorObjectReady 和 QueryProcessorCompleted 屬性。
從您在步驟一中取得 的 WqlConnectionManager 物件中,呼叫 QueryProcessor 物件 ProcessQuery 方法來啟動非同步查詢。
範例
下列範例會查詢所有可用的SMS_Collection物件,而在事件處理常式中,此範例會將數個集合屬性寫入Configuration Manager主控台。
如需呼叫範例程式碼的相關資訊,請參閱呼叫Configuration Manager程式碼片段。
public void QueryCollections(WqlConnectionManager connection)
{
try
{
// Set up the query.
SmsBackgroundWorker bw1 = new SmsBackgroundWorker();
bw1.QueryProcessorObjectReady += new EventHandler<QueryProcessorObjectEventArgs>(bw1_QueryProcessorObjectReady);
bw1.QueryProcessorCompleted += new EventHandler<RunWorkerCompletedEventArgs>(bw1_QueryProcessorCompleted);
// Query for all collections.
connection.QueryProcessor.ProcessQuery(bw1, "select * from SMS_Collection");
// Pause while query runs.
Console.ReadLine();
}
catch (SmsException ex)
{
Console.WriteLine("Failed to start asynchronous query: ", ex.Message);
}
}
void bw1_QueryProcessorObjectReady(object sender, QueryProcessorObjectEventArgs e)
{
try
{
// Get the collection.
IResultObject collection = (IResultObject)e.ResultObject;
//Display properties.
Console.WriteLine(collection["CollectionID"].StringValue);
Console.WriteLine(collection["Name"].StringValue);
Console.WriteLine();
collection.Dispose();
}
catch (SmsQueryException eX)
{
Console.WriteLine("Query Error: " + eX.Message);
}
}
void bw1_QueryProcessorCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Console.WriteLine("Done...");
}
此範例方法具有下列參數:
參數 | Type | 描述 |
---|---|---|
connection |
管理: WqlConnectionManager |
SMS 提供者的有效連線。 |
正在編譯程式碼
命名空間
系統
System.Collections.Generic
System.ComponentModel
Microsoft。ConfigurationManagement.ManagementProvider
Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine
組件
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
健全的程式設計
可引發的Configuration Manager例外狀況為SmsConnectionException和SmsQueryException。 這些可以與 SmsException一起攔截。
另請參閱
物件概觀Configuration Manager延遲屬性
如何使用 Managed 程式碼呼叫Configuration Manager物件類別方法
如何使用 Managed 程式碼連線到Configuration Manager提供者
如何使用 Managed 程式碼建立Configuration Manager物件
如何使用 Managed 程式碼修改Configuration Manager物件
如何使用 Managed 程式碼執行同步Configuration Manager查詢
如何使用 Managed 程式碼讀取Configuration Manager物件
如何使用 Managed 程式碼讀取延遲屬性
如何使用 Managed 程式碼執行同步Configuration Manager查詢
Configuration Manager擴充 WMI 查詢語言
Configuration Manager結果集
Configuration Manager特殊查詢
關於查詢