So führen Sie eine Configuration Manager-Abfrage aus

In Configuration Manager führen Sie eine SMS_Query basierte Abfrage aus, indem Sie die Query-Instance abrufen und dann die WQL-Abfrage in der SMS_Query object-Eigenschaft Expression ausführen.

Nachdem Sie die WQL-Abfrage erstellt haben, können Sie die Abfrage entweder synchron oder asynchron ausführen. Das folgende Beispiel ist synchron. Informationen zum asynchronen Ausführen der Abfrage finden Sie unter So führen Sie eine asynchrone Configuration Manager-Abfrage mit verwaltetem Code durch und So führen Sie eine asynchrone Configuration Manager-Abfrage mit WMI durch. Ändern Sie in diesen Beispielen die select * from collection Zeichenfolge in den Expression Eigenschaftswert.

So führen Sie eine Abfrage aus

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.

  2. Rufen Sie das SMS_Query Objekt für die Abfrage ab, die Sie ausführen möchten.

  3. Führen Sie die durch die object-Eigenschaft Expression identifizierte SMS_Query Abfrage aus.

Beispiel

Die folgende Beispielmethode führt die durch den queryId Parameter identifizierte Abfrage synchron aus.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager-Codeausschnitten.

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;
    }
}

Die Beispielmethode hat die folgenden Parameter:

Parameter Typ Beschreibung
connection - Verwaltet: WqlConnectionManager
- VBScript: SWbemDienste
Eine gültige Verbindung mit dem SMS-Anbieter.
queryID - Verwaltet: String
- VBScript: String
Ein Abfragebezeichner. Weitere Informationen finden Sie unter der SMS_Query Klasseneigenschaft QueryID .

Kompilieren des Codes

Für das C#-Beispiel gelten die folgenden Anforderungen für die Kompilierung:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager-Fehlern.

.NET Framework-Sicherheit

Weitere Informationen zum Sichern von Configuration Manager-Anwendungen finden Sie unter rollenbasierte Verwaltung von Configuration Manager.

Siehe auch

Informationen zu Configuration Manager-AbfragenErstellen einer Configuration Manager-AbfrageAusführen einer asynchronen Configuration Manager-Abfrage mithilfe von verwaltetem CodeAusführen einer asynchronen Configuration Manager-Abfrage mithilfe von WMI