共用方式為


如何使用 Managed 程式碼執行非同步Configuration Manager查詢

在Configuration Manager中,若要使用受控 SMS 提供者執行非同步查詢,請使用ProcessQuery方法。

ProcessQuery方法的第一個參數是SmsBackgroundWorker類別的實例,可提供兩個事件處理常式:

執行非同步查詢

  1. 設定與 SMS 提供者的連線。 如需詳細資訊,請 參閱 SMS 提供者基本概念

  2. 建立 SmsBackgroundWorker 物件,並以回呼方法名稱填入 QueryProcessorObjectReadyQueryProcessorCompleted 屬性。

  3. 從您在步驟一中取得 的 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例外狀況為SmsConnectionExceptionSmsQueryException。 這些可以與 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特殊查詢
關於查詢