Condividi tramite


Come eseguire una query Configuration Manager

In Configuration Manager si esegue una SMS_Query query basata recuperando l'istanza di query e quindi eseguendo la query WQL nella proprietà dell'oggetto ExpressionSMS_Query .

Dopo aver creato la query WQL, è possibile eseguire la query in modo sincrono o asincrono. L'esempio seguente è sincrono. Per informazioni sull'esecuzione asincrona della query, vedere How to Perform an Asynchronous Configuration Manager Query by Using Managed Code (Come eseguireuna query di Configuration Manager asincrona tramite WMI). In questi esempi modificare la select * from collection stringa nel valore della Expression proprietà .

Per eseguire una query

  1. Configurare una connessione al provider SMS. Per altre informazioni, vedere Nozioni fondamentali sul provider SMS.

  2. Ottenere l'oggetto SMS_Query per la query da eseguire.

  3. Eseguire la query identificata dalla proprietà dell'oggetto SMS_QueryExpression .

Esempio

Il metodo di esempio seguente esegue in modo sincrono la query identificata dal queryId parametro .

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice 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;
    }
}

Il metodo di esempio include i parametri seguenti:

Parametro Tipo Descrizione
connection -Gestito: WqlConnectionManager
- VBScript: SWbemServices
Connessione valida al provider SMS.
queryID -Gestito: String
- VBScript: String
Identificatore di query. Per altre informazioni, vedere la proprietà della SMS_Query classe QueryID .

Compilazione del codice

L'esempio C# presenta i requisiti di compilazione seguenti:

Spazi dei nomi

Sistema

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmazione efficiente

Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.

Sicurezza di .NET Framework

Per altre informazioni sulla protezione delle applicazioni Configuration Manager, vedere Configuration Manager'amministrazione basata sui ruoli.

Vedere anche

Informazioni sulle query Configuration ManagerCome creare una query di Configuration ManagerCome eseguire una query Configuration Manager asincrona usando codice gestitoCome eseguire una query asincrona query Configuration Manager tramite WMI