Чтение и запись в файл управления сайтом Configuration Manager с помощью управляемого кода

Чтобы выполнить запись в Configuration Manager файл элемента управления сайтом с помощью управляемого поставщика SMS, вы получите файл определения сайта, запросив необходимый ресурс или компонент. Затем вы обновите внедренное свойство, внедренный список свойств или многостроковый список по мере необходимости.

Примечание.

Вы также можете использовать диспетчер соединений GetInstance для получения требуемого ресурса или компонента.

Управляемый Configuration Manager автоматически управляет сеансом подключения к файлу элемента управления сайтом. Поэтому объекты IResultObject , возвращенные из запроса, обрабатываются так же, как объекты IResultObject , полученные от поставщика SMS.

Чтение и запись в файл элемента управления сайтом

  1. Настройте подключение к поставщику SMS. Дополнительные сведения см. в статье Подключение к поставщику SMS в Configuration Manager с помощью управляемого кода.

  2. Используйте диспетчер подключений объект QueryProcessorExecQuery или метод GetInstance, чтобы получить требуемый ресурс или объект компонента IResultObject элемента управления сайтом.

  3. С помощью IResultObject обновите файл элемента управления сайтом.

  4. Используйте метод Put объекта IResultObjectдля фиксации изменений.

Пример

В следующем примере C# выполняется доступ к компоненту агента клиента файла элемента управления сайтом и создается фиктивное свойство, список свойств и многостроковый список. Затем он удаляет внесенные обновления. В этом примере показано, как запросить файл элемента управления сайтом, выполнить обновления и зафиксировать изменения в файле элемента управления сайтом.

Сведения о вызове примера кода см. в разделе Вызов фрагментов кода Configuration Manager.

public void ReadWriteSCF(WqlConnectionManager connection,string siteCode)  
{  
    try  
    {  

    // Query for the site's site control file client agent settings.  
    IResultObject resources =  
    connection.QueryProcessor.ExecuteQuery  
    ("SELECT * FROM SMS_SCI_ClientComp WHERE ClientComponentName = 'Client Agent' AND SiteCode = '" +  
    siteCode + "'");  

    foreach (IResultObject resource in resources)  
    {          
            // Embedded Properties  

            Console.WriteLine("Embedded property");  
            Console.WriteLine("-----------------");  

            int value = 0;  
            string value1 = "";  
            string value2 = "";  

            // Write a dummy embedded property.  
            this.WriteScfEmbeddedProperty(resource, "Test", 10, "Hello", "World");  

            // Get the embedded property back and display the values.  
            if (this.GetScfEmbeddedProperty(resource, "Test", ref value, ref value1, ref value2))  
            {  
                Console.WriteLine("Value: " + value);  
                Console.WriteLine("Value1: " + value1);  
                Console.WriteLine("Value2: " + value2);  

                // Remove the dummy embedded property.  
                Dictionary<string, IResultObject> EmbeddedProperties = resource.EmbeddedProperties;  
                EmbeddedProperties.Remove("Test");  
                resource.EmbeddedProperties = EmbeddedProperties;  
                resource.Put();  

                // See if the dummy embedded property is still there.  
                if (this.GetScfEmbeddedProperty(resource, "Test", ref value, ref value1, ref value2))  
                {  
                    Console.WriteLine("Test exists");  
                }  
                else  
                {  
                    Console.WriteLine("Test does not exist");  
                }  
            }  
            else  
            {  
                Console.WriteLine("Property not found");  
            }  

            Console.WriteLine();  

            // Embedded property list.  

            Console.WriteLine("Embedded property list");  
            Console.WriteLine("----------------------");  

            // values contains the embedded property list.  
            ArrayList values = new ArrayList();  

            values.Add("Elephant");  
            values.Add("Giraffe");  

            // Write to the resource.  
            this.WriteScfEmbeddedPropertyList(resource, "Animals", values);  

            ArrayList retrievedValues;  

            // Get the embedded property list and display.  
            if (this.GetScfEmbeddedPropertyList(resource, "Animals", out retrievedValues))  
            {  
                foreach (string retrievedValue in retrievedValues)  
                {  
                    Console.WriteLine(retrievedValue);  
                }  

                // Remove one of the entries.  
                retrievedValues.Remove("Elephant");  
                Console.WriteLine();  

                // Update the list.  
                this.WriteScfEmbeddedPropertyList(resource, "Animals", retrievedValues);  

                // Display the list again.  
                this.GetScfEmbeddedPropertyList(resource, "Animals", out retrievedValues);  
                foreach (string retrievedValue in retrievedValues)  
                {  
                    Console.WriteLine(retrievedValue);  
                }  

            }  
            else  
            {  
                Console.WriteLine("None");  
            }  

            Console.WriteLine();  

            // RegMultiStringList.  

            Console.WriteLine("RegMultiStringList");  
            Console.WriteLine("------------------");  

            // valuesStrings is the RegMultiString List.  
            ArrayList valueStrings = new ArrayList();  

            valueStrings.Add("Tom");  
            valueStrings.Add("Harry");  

            this.WriteScfRegMultiStringList(resource, "Names", valueStrings);  

            ArrayList retrievedValuesStrings;  

            if (this.GetScfRegMultiStringList(resource, "Names", out retrievedValuesStrings))  
            {  
                foreach (string retrievedValue in retrievedValuesStrings)  
                {  
                    Console.WriteLine(retrievedValue);  
                }  

                // Remove one of the entries.  
                retrievedValuesStrings.Remove("Tom");  
                Console.WriteLine();  

                // Update the list.  
                this.WriteScfRegMultiStringList(resource, "Names", retrievedValuesStrings);  

                // Display the list again.  
                this.GetScfRegMultiStringList(resource, "Names", out retrievedValuesStrings);  
                foreach (string retrievedValue in retrievedValuesStrings)  
                {  
                    Console.WriteLine(retrievedValue);  
                }  
            }  
            else  
            {  
                Console.WriteLine("None");  
            }  
        }  
    }  
    catch (SmsException e)  
    {  
        Console.WriteLine("Failed: " + e.Message);  
        throw;  
    }  
}  

Метод примера имеет следующие параметры:

Параметр Тип Описание
connection - WqlConnectionManager Допустимое подключение к поставщику SMS.
siteCode - String Код сайта для Configuration Manager сайта.

Компиляция программы

Пространства имен

System;

System.Collections.Generic;

System.Collections

System.ComponentModel

Майкрософт. ConfigurationManagement.ManagementProvider

Майкрософт. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Надежное программирование

Configuration Manager исключения, которые могут быть вызваны: SmsConnectionException и SmsQueryException. Их можно поймать вместе с SmsException.

См. также

Основные сведения о поставщике SMSо файле управления сайтом Configuration Manager
Подключение к поставщику Configuration Manager с помощью управляемого кода
Чтение внедренного списка свойств файла элемента управления сайтом Configuration Manager
Обзор объектов