Como ler e gravar no arquivo de controle de site do Gerenciador de Configurações usando código gerenciado

Para gravar no arquivo de controle de site do Configuration Manager usando o Provedor de SMS gerenciado, você obterá o arquivo de definição do site consultando o recurso ou componente necessário. Em seguida, atualize a propriedade incorporada, a lista de propriedades incorporadas ou a lista de várias cadeias de caracteres, conforme necessário.

Observação

Você também pode usar o gerenciador de conexão GetInstance para obter o recurso ou o componente necessário.

O Gerenciador de Configurações gerenciado gerencia a sessão de conexão com o arquivo de controle do site automaticamente para você. Portanto, você trata os objetos IResultObject retornados da consulta da mesma maneira que trata os objetos IResultObject recuperados do Provedor de SMS.

Para ler e gravar no arquivo de controle do site

  1. Configurar uma conexão com o Provedor de SMS. Para obter mais informações, consulte How to Conexão to an SMS Provider in Configuration Manager by Using Managed Code.

  2. Use o método execQuery ou GetInstance do objeto Connection Manager Query Para obter o recurso de arquivo de controle de site necessário ou o objeto IResultObject de componente.

  3. Usando o IResultObject atualize o arquivo de controle do site.

  4. Use o método Put do objeto IResultObject para confirmação das alterações.

Exemplo

O exemplo C# a seguir acessa o componente do agente cliente do arquivo de controle do site e cria uma propriedade fisi, lista de propriedades e lista de várias cadeias de caracteres. Em seguida, remove as atualizações que foram feitas. O exemplo demonstra como consultar o arquivo de controle do site, fazer atualizações e confirmação de alterações no arquivo de controle do site.

Para obter informações sobre como chamar o código de exemplo, consulte Calling Configuration Manager Code Snippets.

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

O método example tem os seguintes parâmetros:

Parâmetro Tipo Descrição
connection - WqlConnectionManager Uma conexão válida com o Provedor de SMS.
siteCode - String O código do site para o site do Configuration Manager.

Compilando o código

Namespaces

System

System.Collections.Generic

System.Collections

System.ComponentModel

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação robusta

As exceções do Configuration Manager que podem ser ativas são SmsConnectionException e SmsQueryException. Eles podem ser capturados juntamente com SmsException.

Confira também

Fundamentos do Provedor de SMS Sobre o Arquivo de Controle de Site do Gerenciador de Configuração
Como Conexão um Provedor do Gerenciador de Configurações usando Código Gerenciado
Como ler uma lista de propriedades incorporadas do arquivo de controle de site do Gerenciador de Configurações
Visão geral de objetos