Delen via


Het Configuration Manager sitebeheerbestand lezen en schrijven met behulp van beheerde code

Als u wilt schrijven naar het Configuration Manager sitebeheerbestand met behulp van de beheerde SMS-provider, haalt u het sitedefinitiebestand op door een query uit te voeren op de vereiste resource of het vereiste onderdeel. Vervolgens werkt u de ingesloten eigenschap, de lijst met ingesloten eigenschappen of de lijst met meerdere tekenreeksen naar behoefte bij.

Opmerking

U kunt ook GetInstance voor verbindingsbeheer gebruiken om de vereiste resource of het vereiste onderdeel op te halen.

De beheerde Configuration Manager beheert de verbindingssessie met het sitebeheerbestand automatisch voor u. Daarom behandelt u de IResultObject-objecten die worden geretourneerd uit de query op dezelfde manier als IResultObject-objecten die zijn opgehaald van de SMS-provider.

Het sitebeheerbestand lezen en schrijven

  1. Een verbinding met de SMS-provider instellen. Zie Verbinding maken met een SMS-provider in Configuration Manager met behulp van beheerde code voor meer informatie.

  2. Gebruik de methode Verbindingsbeheer QueryProcessor-objectExecQuery of GetInstance om de vereiste sitebeheerbestandsresource of het onderdeel IResultObject-object op te halen.

  3. Werk het sitebeheerbestand bij met behulp van het IResultObject .

  4. Gebruik de methode Put van het IResultObject-object om de wijzigingen door te voeren.

Voorbeeld

In het volgende C#-voorbeeld wordt het clientagentonderdeel van het sitebeheerbestand geopend en wordt een dummy-eigenschap, eigenschappenlijst en lijst met meerdere tekenreeksen gemaakt. Vervolgens worden de aangebrachte updates verwijderd. In het voorbeeld ziet u hoe u een query uitvoert op het sitebeheerbestand, updates aanbrengt en wijzigingen doorvoert in het sitebeheerbestand.

Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.

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

De voorbeeldmethode heeft de volgende parameters:

Parameter Type Beschrijving
connection - WqlConnectionManager Een geldige verbinding met de SMS-provider.
siteCode - String De sitecode voor de Configuration Manager site.

De code compileren

Naamruimten

Systeem

System.Collections.Generic

System.Collections

System.ComponentModel

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Vergadering

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robuust programmeren

De Configuration Manager uitzonderingen die kunnen worden gegenereerd, zijn SmsConnectionException en SmsQueryException. Deze kunnen samen met SmsException worden gevangen.

Zie ook

Basisprincipes van sms-providerover het Configuration Manager sitebeheerbestand
Verbinding maken met een Configuration Manager-provider met behulp van beheerde code
Een lijst met ingesloten eigenschappen van Configuration Manager sitebeheerbestand lezen
Overzicht van objecten