Condividi tramite


Come leggere e scrivere nel file di controllo del sito Configuration Manager usando codice gestito

Per scrivere nel file di controllo del sito Configuration Manager usando il provider SMS gestito, è possibile ottenere il file di definizione del sito eseguendo una query per la risorsa o il componente necessario. Aggiornare quindi la proprietà incorporata, l'elenco di proprietà incorporate o l'elenco a più stringhe in base alle esigenze.

Nota

È anche possibile usare GetInstance della gestione connessione per ottenere la risorsa o il componente richiesto.

Il Configuration Manager gestito gestisce automaticamente la sessione di connessione al file di controllo del sito. Di conseguenza, gli oggetti IResultObject restituiti dalla query vengono considerati nello stesso modo in cui vengono trattati gli oggetti IResultObject recuperati dal provider SMS.

Per leggere e scrivere nel file di controllo del sito

  1. Configurare una connessione al provider SMS. Per altre informazioni, vedere Come connettersi a un provider SMS in Configuration Manager tramite codice gestito.

  2. Utilizzare il Gestione connessioni metodo ExecQuery o GetInstance dell'oggetto QueryProcessor per ottenere la risorsa del file di controllo del sito o l'oggetto IResultObject del componente necessario.

  3. Usando IResultObject aggiornare il file di controllo del sito.

  4. Utilizzare il metodo Put dell'oggetto IResultObject per eseguire il commit delle modifiche.

Esempio

L'esempio C# seguente accede al componente agente client del file di controllo del sito e crea una proprietà fittizia, un elenco di proprietà e un elenco di più stringhe. Rimuove quindi gli aggiornamenti eseguiti. Nell'esempio viene illustrato come eseguire query sul file di controllo del sito, eseguire aggiornamenti e eseguire il commit delle modifiche al file di controllo del sito.

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice 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;  
    }  
}  

Il metodo di esempio include i parametri seguenti:

Parametro Tipo Descrizione
connection - WqlConnectionManager Connessione valida al provider SMS.
siteCode - String Codice del sito per il sito Configuration Manager.

Compilazione del codice

Namespaces

Sistema

System.collections.generic

System.Collections

System.ComponentModel

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmazione efficiente

Le eccezioni Configuration Manager che possono essere generate sono SmsConnectionException e SmsQueryException. Questi possono essere intercettati insieme a SmsException.

Vedere anche

Nozioni fondamentali sul provider SMSsul file di controllo del sito Configuration Manager
Come connettersi a un provider di Configuration Manager usando codice gestito
Come leggere un elenco di proprietà incorporate di un file di controllo del sito Configuration Manager
Panoramica sugli oggetti