Jak odczytywać właściwości z opóźnieniami przy użyciu kodu zarządzanego

Aby odczytać leniwą właściwość z obiektu programu Configuration Manager zwróconego w zapytaniu, należy pobrać wystąpienie obiektu, które pobiera wszelkie właściwości leniwego obiektu od dostawcy SMS.

Uwaga

Jeśli znasz pełną ścieżkę do obiektu WMI, wywołanie metody GetInstance zwraca obiekt WMI wraz z wszelkimi właściwościami z opóźnieniem. Aby uzyskać więcej informacji, zobacz Jak odczytać obiekt programu Configuration Manager przy użyciu kodu zarządzanego.

Aby uzyskać więcej informacji, zobacz Właściwości leniwe programu Configuration Manager.

Aby odczytać właściwości z opóźnieniem

  1. Konfigurowanie połączenia z dostawcą usługi SMS. Aby uzyskać więcej informacji, zobacz Jak połączyć się z dostawcą wiadomości SMS w programie Configuration Manager przy użyciu kodu zarządzanego.

  2. Używanie obiektu QueryProcessor do wykonywania zapytań o obiekty programu Configuration Manager.

  3. Iteruj wyniki zapytania.

  4. Korzystając z WqlConnectionManager uzyskanego w kroku pierwszym, wywołaj GetInstance , aby pobrać obiekt IResultObject dla każdego obiektu, z którego chcesz uzyskać właściwości z opóźnieniem.

Przykład

Poniższy przykład kodu w języku C# wysyła zapytanie dotyczące wszystkich obiektów SMS_Collection , a następnie wyświetla nazwy reguł uzyskane z CollectionRules właściwości Lazy.

Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu programu Configuration Manager.

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;
    }
}

Ta przykładowa metoda ma następujące parametry:

Parametr Wpisać Opis
connection WqlConnectionManager Prawidłowe połączenie z dostawcą SMS.

Kompilowanie kodu

Przestrzenie nazw

System

System.Collections.Generic

System.ComponentModel

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Montaż

Microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Wydajne programowanie

Wyjątki programu Configuration Manager, które mogą zostać zgłoszone, to SmsConnectionException i SmsQueryException. Można je przechwycić razem z SmsException.

Zobacz też

Omówienie obiektów

Leniwe właściwości programu Configuration Manager

Jak wywołać metodę klasy obiektu programu Configuration Manager przy użyciu kodu zarządzanego

Jak połączyć się z dostawcą programu Configuration Manager przy użyciu kodu zarządzanego

Jak utworzyć obiekt programu Configuration Manager przy użyciu kodu zarządzanego

Jak zmodyfikować obiekt programu Configuration Manager przy użyciu kodu zarządzanego

Jak wykonać asynchroniczne zapytanie programu Configuration Manager przy użyciu kodu zarządzanego

Jak wykonać synchroniczne zapytanie programu Configuration Manager przy użyciu kodu zarządzanego

Jak odczytać obiekt programu Configuration Manager przy użyciu kodu zarządzanego