Compartilhar via


How to Read Lazy Properties by Using Managed Code

Para ler uma propriedade em diferido a partir de um objeto Configuration Manager devolvido numa consulta, obtém a instância do objeto, que obtém quaisquer propriedades de objeto em diferido do Fornecedor de SMS.

Observação

Se souber o caminho completo para o objeto WMI, uma chamada para o método GetInstance devolve o objeto WMI juntamente com quaisquer propriedades lentas. Para obter mais informações, veja How to Read a Configuration Manager Object by Using Managed Code (Como Ler um Objeto de Configuration Manager através do Código Gerido).

Para obter mais informações, veja Configuration Manager Propriedades Em Diferido.

Para ler propriedades em diferido

  1. Configure uma ligação ao Fornecedor de SMS. Para obter mais informações, veja How to Connect to an SMS Provider in Configuration Manager by Using Managed Code (Como Ligar a um Fornecedor de SMS no Configuration Manager Através do Código Gerido).

  2. Utilize o objeto QueryProcessor para consultar Configuration Manager objetos.

  3. Iterar através dos resultados da consulta.

  4. Com o WqlConnectionManager que obtém no primeiro passo, chame GetInstance para obter o objeto IResultObject para cada objeto consultado do qual pretende obter propriedades lentas.

Exemplo

O seguinte exemplo de código C# consulta todas as SMS_Collection objetos e, em seguida, apresenta os nomes das regras obtidos a CollectionRules partir da propriedade em diferido.

Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos de Código.

public void ReadLazyProperty(WqlConnectionManager connection)
{
    try
    {
        // Query all collections.
        IResultObject collections = connection.QueryProcessor.ExecuteQuery("Select * from SMS_Collection");
        foreach (IResultObject collection in collections)
        {
            // Get the collection object and lazy properties.
            collection.Get();

            Console.WriteLine(collection["Name"].StringValue);

            // Get the rules.
            List<IResultObject> rules = collection.GetArrayItems("CollectionRules");
            if (rules.Count == 0)
            {
                Console.WriteLine("No rules");
                Console.WriteLine();
                continue;
            }

            foreach (IResultObject rule in rules)
            {
                // Display rule names.
                Console.WriteLine("Rule name: " + rule["RuleName"].StringValue);
            }

            Console.WriteLine();
        }
    }
    catch (SmsQueryException ex)
    {
        Console.WriteLine("Failed to get collection. Error: " + ex.Message);
        throw;
    }
}

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

Parâmetro Tipo Descrição
connection - WqlConnectionManager Uma ligação válida ao Fornecedor de SMS.

Compilando o código

Namespaces

System

System.Collections.Generic

System.ComponentModel

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação robusta

As Configuration Manager exceções que podem ser geradas são SmsConnectionException e SmsQueryException. Estes podem ser capturados em conjunto com SmsException.

Confira também

Descrição geral dos objetosConfiguration Manager Propriedades LentasComo Chamar um Método de Classe de Objeto Configuration Manager através do Código GeridoComo Ligar a um Fornecedor de Configuration Manager através do Código GeridoComo Criar um Configuration Manager Objeto ao Utilizar Código GeridoComo Modificar um Objeto de Configuration Manager Utilizando Código GeridoComo Executar uma Consulta de Configuration Manager Assíncrona com o Código GeridoComo Executar uma Consulta Síncrona Configuration Manager Consulta através do Código GeridoComo Ler um Objeto de Configuration Manager Através do Código Gerido