Delen via


Een Configuration Manager-query uitvoeren

In Configuration Manager voert u een op basis van een SMS_Query query uit door het queryexemplaren op te halen en vervolgens de WQL-query uit te voeren in de SMS_Query objecteigenschapExpression.

Nadat u de WQL-query hebt uitgevoerd, kunt u de query synchroon of asynchroon uitvoeren. Het volgende voorbeeld is synchroon. Zie Een Asynchrone Configuration Manager-query uitvoeren met beheerde code en Een Asynchrone Configuration Manager-query uitvoeren met behulp van WMI voor meer informatie over het asynchroon uitvoeren van de query. Wijzig in deze voorbeelden de select * from collection tekenreeks in de Expression eigenschapswaarde.

Een query uitvoeren

  1. Een verbinding met de SMS-provider instellen. Zie Basisprincipes van SMS-provider voor meer informatie.

  2. Haal het SMS_Query object op voor de query die u wilt uitvoeren.

  3. Voer de query uit die wordt geïdentificeerd door de SMS_Query eigenschap object Expression .

Voorbeeld

Met de volgende voorbeeldmethode wordt de query die is geïdentificeerd door de queryId parameter synchroon uitgevoerd.

Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.

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

De voorbeeldmethode heeft de volgende parameters:

Parameter Type Beschrijving
connection -Beheerd: WqlConnectionManager
- VBScript: SWbemServices
Een geldige verbinding met de SMS-provider.
queryID -Beheerd: String
-Vbscript: String
Een query-id. Zie de SMS_Query klasse-eigenschap QueryID voor meer informatie.

De code compileren

Het C#-voorbeeld heeft de volgende compilatievereisten:

Naamruimten

Systeem

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Vergadering

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robuust programmeren

Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.

.NET Framework Beveiliging

Zie Configuration Manager op rollen gebaseerd beheer voor meer informatie over het beveiligen van Configuration Manager toepassingen.

Zie ook

Over Configuration Manager-query's
Een Configuration Manager-query maken
Een asynchrone Configuration Manager-query uitvoeren met behulp van beheerde code
Een Asynchrone Configuration Manager-query uitvoeren met behulp van WMI