Guide pratique pour lire et écrire dans le fichier de contrôle de site Configuration Manager à l’aide de code managé

Pour écrire dans le Configuration Manager fichier de contrôle de site à l’aide du fournisseur SMS managé, vous obtenez le fichier de définition de site en interrogeant la ressource ou le composant requis. Vous mettez ensuite à jour la propriété incorporée, la liste de propriétés incorporées ou la liste à chaînes multiples en fonction des besoins.

Remarque

Vous pouvez également utiliser le gestionnaire de connexions GetInstance pour obtenir la ressource ou le composant requis.

Le Configuration Manager managé gère automatiquement la session de connexion au fichier de contrôle de site. Par conséquent, vous traitez les objets IResultObject retournés à partir de la requête de la même façon que vous traitez les objets IResultObject récupérés à partir du fournisseur SMS.

Pour lire et écrire dans le fichier de contrôle de site

  1. Configurez une connexion au fournisseur SMS. Pour plus d’informations, consultez Guide pratique pour se connecter à un fournisseur SMS dans Configuration Manager à l’aide de code managé.

  2. Utilisez la méthode ExecQuery ou GetInstance de l’objet QueryProcessor Gestionnaire des connexions pour obtenir la ressource de fichier de contrôle de site ou l’objet IResultObject du composant requis.

  3. À l’aide de IResultObject , mettez à jour le fichier de contrôle de site.

  4. Utilisez la méthode Put de l’objet IResultObject pour valider les modifications.

Exemple

L’exemple C# suivant accède au composant agent client du fichier de contrôle de site et crée une propriété factice, une liste de propriétés et une liste à chaînes multiples. Il supprime ensuite les mises à jour qui ont été effectuées. L’exemple montre comment interroger le fichier de contrôle de site, effectuer des mises à jour et valider les modifications apportées au fichier de contrôle de site.

Pour plus d’informations sur l’appel de l’exemple de code, consultez Appel d’extraits de code 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;  
    }  
}  

L’exemple de méthode a les paramètres suivants :

Paramètre Type Description
connection - WqlConnectionManager Connexion valide au fournisseur SMS.
siteCode - String Code de site pour le site Configuration Manager.

Compilation du code

Espaces de noms

Système

System.Collections.Generic

System.Collections

System.ComponentModel

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmation robuste

Les exceptions Configuration Manager qui peuvent être levées sont SmsConnectionException et SmsQueryException. Ceux-ci peuvent être regroupés avec SmsException.

Voir aussi

Notions de base du fournisseur SMSÀ propos du fichier de contrôle de site Configuration Manager
Comment se connecter à un fournisseur Configuration Manager à l’aide de code managé
Guide pratique pour lire une liste de propriétés incorporées d’un fichier de contrôle de site Configuration Manager
Vue d’ensemble des objets