分享方式:


如何執行Configuration Manager查詢

在Configuration Manager中,您可以 SMS_Query 取得查詢實例,然後在 物件 Expression 屬性中 SMS_Query 執行 WQL 查詢,以執行以為基礎的查詢。

擁有 WQL 查詢之後,您可以同步或非同步執行查詢。 下列範例是同步的。 如需以非同步方式執行查詢的資訊,請參閱如何使用 Managed 程式碼執行非同步Configuration Manager查詢如何使用 WMI 執行非同步Configuration Manager查詢。 在這些範例中 select * from collection ,將字串變更為 Expression 屬性值。

若要執行查詢

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

  2. SMS_Query取得您想要執行之查詢的 物件。

  3. 執行物件 Expression 屬性所識別的 SMS_Query 查詢。

範例

下列範例方法會同步執行 參數所識別的 queryId 查詢。

如需呼叫範例程式碼的相關資訊,請參閱呼叫Configuration Manager程式碼片段

Sub RunQuery(connection, queryId)  
    Dim query  
    Dim queryResults  
    Dim queryResult  

    ' Get query.  
    Set query=connection.Get("SMS_Query.QueryID='" & queryId  & "'" )  

    If err.number<>0 Then  
        WScript.echo "Couldn't get Queries"  
        Exit Sub  
    End If  

    ' Run query.  
    WScript.echo query.Name  
    WScript.echo "----------------------------------"  

    Set queryResults=connection.ExecQuery(query.Expression)  
    For Each queryResult In queryResults  
        wscript.echo "     " & queryResult.Name  
    Next  
    If queryResults.Count=0 Then  
        WScript.echo "      no query results"  
    End If  
End Sub  
public void RunQuery(WqlConnectionManager connection, string queryId)  
{  
    try  
    {  
        // Get the query.  
        IResultObject query = connection.GetInstance(@"SMS_Query.QueryID='" + queryId + "'");  

        Console.WriteLine(query["Name"].StringValue);  
        Console.WriteLine("----------------------------------");  

        // Get the query results.  
        IResultObject queryResults = connection.QueryProcessor.ExecuteQuery(query["Expression"].StringValue);  

        bool resultsFound = false;  
        foreach (IResultObject queryResult in queryResults)  
        {  
            resultsFound = true;  
            Console.WriteLine(queryResult["Name"].StringValue);  
        }  
        if (resultsFound == false)  
        {  
            Console.WriteLine("     No query results");  
        }  
    }  
    catch (SmsException ex)  
    {  
        Console.WriteLine("Failed to run query: " + ex.Message);  
        throw;  
    }  
}  

範例方法具有下列參數:

參數 Type 描述
connection -管理: WqlConnectionManager
- VBScript: SWbemServices
SMS 提供者的有效連線。
queryID -管理: String
- VBScript: String
查詢識別碼。 如需詳細資訊,請參 SMS_Query 閱 類別 QueryID 屬性。

正在編譯程式碼

C# 範例具有下列編譯需求:

命名空間

系統

System.Collections.Generic

System.Text

Microsoft。ConfigurationManagement.ManagementProvider

Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine

組件

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

健全的程式設計

如需錯誤處理的詳細資訊,請參閱關於Configuration Manager錯誤

.NET Framework 安全性

如需保護Configuration Manager應用程式的詳細資訊,請參閱Configuration Manager角色型系統管理

另請參閱

關於Configuration Manager查詢
如何建立Configuration Manager查詢
如何使用 Managed 程式碼執行非同步Configuration Manager查詢
如何使用 WMI 執行非同步Configuration Manager查詢