Compartilhar via


Como executar uma consulta de Configuration Manager

Em Configuration Manager, você executa uma SMS_Query consulta baseada obtendo a instância de consulta e executando a consulta WQL na propriedade do SMS_Query objetoExpression.

Depois de ter a consulta WQL, você pode executar a consulta 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, confira Como executar uma consulta assíncrona Configuration Manager usando código gerenciado e como executar uma consulta assíncrona Configuration Manager usando wmi. Nesses 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, confira Os fundamentos do Provedor de SMS.

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

  3. Execute a consulta identificada pela propriedade do SMS_Query objeto Expression .

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 Configuration Manager Snippets de Código.

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 propriedade de SMS_Query classe QueryID .

Compilando o código

O exemplo 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 de Configuration Manager.

Segurança do .NET Framework

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

Confira também

Sobre consultas Configuration Manager
Como criar uma consulta de Configuration Manager
Como executar uma consulta de Configuration Manager assíncrona usando código gerenciado
Como executar uma consulta de Configuration Manager assíncrona usando o WMI