Como criar uma consulta do Configuration Manager

No Configuration Manager, você cria uma SMS_Queryconsulta baseada em , criando uma instância de SMS_Query. O SMS_Query objeto de classe Expression define uma consulta WQL. Se você quiser limitar os resultados da consulta a uma coleção específica, especifique o LimitToCollectionID identificador da coleção na propriedade.

Observação

Quando você cria uma consulta, ela é exibida no console do Configuration Manager em Consultas.

Para criar 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. Crie uma instância do SMS_Query.

  3. Preencha as SMS_Query propriedades.

  4. Confirmar o SMS_Query.

  5. Se necessário, recupere o objeto de consulta e obtenha o identificador de consulta.

Exemplo

O método de exemplo a seguir cria uma consulta de SMS_Query classe que consulta todos os sistemas. O método retorna o identificador de consulta, que pode ser usado como entrada para o exemplo em Como executar uma consulta do Configuration Manager.

Para obter informações sobre como chamar o código de exemplo, consulte Chamando trechos de código do Configuration Manager.

Function CreateQuery(connection)
   On Error Resume Next

   Dim query
   Dim path

   ' Create a query object.
    Set query = connection.Get("SMS_Query").SpawnInstance_()

    If Err.Number<>0 Then
        Wscript.Echo "Couldn't create query object"
        CreateQuery = Null
        Exit Function
    End If

    ' Populate the object.
    query.Comments = "A query for all systems"
    query.Expression = "select Name, " + _
    "SMSAssignedSites, " +              _
    "IPAddresses, " +                   _
    "IPSubnets, " +                     _
    "OperatingSystemNameandVersion, " + _
    "ResourceDomainORWorkgroup, " +     _
    "LastLogonUserDomain, " +           _
    "LastLogonUserName, " +             _
    "SMSUniqueIdentifier, " +           _
    "ResourceId, " +                    _
    "ResourceType, " +                  _
    "NetbiosName " +                    _
    "from sms_r_system"
    query.LimitToCollectionID = nothing
    query.Name = "Query All Systems"
    query.TargetClassName = "SMS_R_System"

    ' Commit the object
    path = query.Put_

    If Err.Number<>0 Then
        Wscript.Echo "Couldn't commit the query"
        CreateQuery = Null
        Exit Function
    End If

    WScript.Echo "Query created"

    ' Get the object back to get the query identifier.
    Set query = connection.Get(path)
    CreateQuery = query.QueryID

End Function

public string CreateQuery(WqlConnectionManager connection)
{
    try
    {
        // Create an SMS_Query object.
        IResultObject query = connection.CreateInstance("SMS_Query");

        // Populate the object.
        query["Comments"].StringValue = "A query for all systems";
        query["Expression"].StringValue =
            "select Name, " +
            "SMSAssignedSites, " +
            "IPAddresses, " +
            "IPSubnets, " +
            "OperatingSystemNameandVersion, " +
            "ResourceDomainORWorkgroup, " +
            "LastLogonUserDomain, " +
            "LastLogonUserName, " +
            "SMSUniqueIdentifier, " +
            "ResourceId, " +
            "ResourceType, " +
            "NetbiosName " +
            "from sms_r_system";
        query["LimitToCollectionID"].StringValue = null;
        query["Name"].StringValue = "Query All Systems";
        query["TargetClassName"].StringValue = "SMS_R_System";

        // Commit the query.
        query.Put();

        // Get the query - allows access to the queryID.
        query.Get();

        // Return the query identifier.
        return query["QueryID"].StringValue;
    }
    catch (SmsException e)
    {
        Console.WriteLine("Failed to run the query: " + e.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.

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 executar uma consulta do Configuration Manager