次の方法で共有


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
クエリ識別子。 詳細については、 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