Dela via


Köra en Configuration Manager fråga

I Configuration Manager kör du en SMS_Query baserad fråga genom att hämta frågeinstansen och sedan genom att köra WQL-frågan i objektegenskapen SMS_QueryExpression.

När du har WQL-frågan kan du köra frågan antingen synkront eller asynkront. Följande exempel är synkront. Information om hur du kör frågan asynkront finns i How to Perform an Asynchronous Configuration Manager Query by Using Managed Code (Så här utför du enasynkron Configuration Manager fråga med hjälp av WMI). I de här exemplen ändrar du strängen select * from collection till egenskapsvärdet Expression .

Så här kör du en fråga

  1. Konfigurera en anslutning till SMS-providern. Mer information finns i grunderna för SMS-provider.

  2. SMS_Query Hämta objektet för den fråga som du vill köra.

  3. Kör frågan som identifieras av objektegenskapen SMS_QueryExpression .

Exempel

Följande exempelmetod kör synkront frågan som identifieras av parametern queryId .

Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.

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

Exempelmetoden har följande parametrar:

Parameter Typ Beskrivning
connection -Hanterade: WqlConnectionManager
– VBScript: SWbemServices
En giltig anslutning till SMS-providern.
queryID -Hanterade: String
-Vbscript: String
En frågeidentifierare. Mer information finns i klassegenskapen SMS_QueryQueryID .

Kompilera koden

C#-exemplet har följande kompileringskrav:

Namnområden

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Församlingen

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robust programmering

Mer information om felhantering finns i Om Configuration Manager fel.

.NET Framework Säkerhet

Mer information om hur du skyddar Configuration Manager program finns i Configuration Manager rollbaserad administration.

Se även

Om Configuration Manager frågor
Så här skapar du en Configuration Manager fråga
Så här utför du en asynkron Configuration Manager fråga med hjälp av hanterad kod
Så här utför du en asynkron Configuration Manager fråga med hjälp av WMI