次の方法で共有


Configuration Manager クエリを実行する方法

Configuration Managerでは、クエリ インスタンスをSMS_Query取得し、オブジェクト Expression プロパティで WQL クエリを実行することで、ベースのクエリをSMS_Query実行します。

WQL クエリを作成したら、クエリを同期的または非同期的に実行できます。 次の例は同期です。 クエリを非同期的に実行する方法については、「マネージ コードを使用して非同期Configuration Manager クエリを実行する方法」および「WMI を使用して非同期Configuration Manager クエリを実行する方法」を参照してください。 これらの例では、文字列を select * from collection プロパティ値に Expression 変更します。

クエリを実行するには

  1. SMS プロバイダーへの接続を設定します。 詳細については、「 SMS プロバイダーの基礎」を参照してください。

  2. 実行する SMS_Query クエリのオブジェクトを取得します。

  3. オブジェクト プロパティによって識別されるクエリを SMS_Query 実行します Expression

次のメソッド例では、 パラメーターによって識別されるクエリを同期的に 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;  
    }  
}  

このメソッドの例には、次のパラメーターがあります。

パラメーター 説明
connection -管理: WqlConnectionManager
- VBScript: SWbemServices
SMS プロバイダーへの有効な接続。
queryID -管理: String
-Vbscript: String
クエリ識別子。 詳細については、class QueryID プロパティに関するページをSMS_Query参照してください。

コードのコンパイル

C# の例には、次のコンパイル要件があります。

名前空間

System

System.Collections.Generic

System.text

Microsoft。ConfigurationManagement.ManagementProvider

Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

堅牢なプログラミング

エラー処理の詳細については、「Configuration Manager エラーについて」を参照してください。

.NET Framework のセキュリティ

Configuration Manager アプリケーションのセキュリティ保護の詳細については、「ロールベースの管理Configuration Manager」を参照してください。

関連項目

クエリのConfiguration Managerについて
Configuration Manager クエリを作成する方法
マネージド コードを使用して非同期Configuration Manager クエリを実行する方法
WMI を使用して非同期Configuration Manager クエリを実行する方法