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

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

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
クエリ識別子。 詳細については、 SMS_Query クラス QueryID プロパティを参照してください。

コードのコンパイル

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 クエリ