Como executar uma consulta do Configuration Manager

No Configuration Manager, você executa uma SMS_Query consulta baseada obtendo a instância da consulta e, em seguida, executando a consulta WQL na propriedade object SMS_QueryExpression.

Depois de ter a consulta WQL, você poderá executá-la de forma síncrona ou assíncrona. O exemplo a seguir é síncrono. Para obter informações sobre como executar a consulta de forma assíncrona, consulte Como executar uma consulta assíncrona do Configuration Manager usando código gerenciado e Como executar uma consulta assíncrona do Configuration Manager usando WMI. Nestes exemplos, altere a select * from collection cadeia de caracteres para o valor da Expression propriedade.

Para executar uma consulta

  1. Configure uma conexão com o provedor de SMS. Para obter mais informações, consulte Conceitos básicos do Provedor SMS.

  2. Obtenha o SMS_Query objeto para a consulta que você deseja executar.

  3. Execute a consulta identificada pela propriedade object SMS_QueryExpression .

Exemplo

O método de exemplo a seguir executa de forma síncrona a consulta identificada pelo queryId parâmetro.

Para obter informações sobre como chamar o código de exemplo, consulte Chamando trechos de código do 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;
    }
}

O método de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
connection - Gerenciado: WqlConnectionManager
- VBScript: SWbemServices
Uma conexão válida com o provedor de SMS.
queryID - Gerenciado: String
- VBScript: String
Um identificador de consulta. Para obter mais informações, consulte a SMS_Query propriedade class QueryID .

Compilando o código

O exemplo do C# tem os seguintes requisitos de compilação:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Programação robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Configuration Manager.

Segurança do .NET Framework

Para obter mais informações sobre como proteger aplicativos do Configuration Manager, consulte Administração baseada em funções do Configuration Manager.

Confira também

Sobre consultas do Configuration ManagerComo criar uma consulta do Configuration ManagerComo executar uma consulta assíncrona do Configuration Manager usando código gerenciadoComo executar uma consulta assíncrona Consulta do Configuration Manager usando WMI