Lesen und Schreiben in die Configuration Manager Site Control-Datei mithilfe von verwaltetem Code

Um mithilfe des verwalteten SMS-Anbieters in die Standortsteuerungsdatei von Configuration Manager zu schreiben, rufen Sie die Standortdefinitionsdatei ab, indem Sie die erforderliche Ressource oder Komponente abfragen. Anschließend aktualisieren Sie die eingebettete Eigenschaft, die Liste der eingebetteten Eigenschaften oder die Liste mit mehreren Zeichenfolgen nach Bedarf.

Hinweis

Sie können auch den Verbindungs-Manager GetInstance verwenden, um die erforderliche Ressource oder Komponente abzurufen.

Der verwaltete Configuration Manager verwaltet die Verbindungssitzung zur Standortsteuerungsdatei automatisch für Sie. Daher behandeln Sie die von der Abfrage zurückgegebenen IResultObject-Objekte genauso wie IResultObject-Objekte , die vom SMS-Anbieter abgerufen wurden.

So lesen und schreiben Sie in die Websitesteuerungsdatei

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit einem SMS-Anbieter in Configuration Manager mithilfe von verwaltetem Code.

  2. Verwenden Sie die Methode QueryProcessor im Verbindungs-Manager, das ExecQuery- oder die GetInstance-Methode, um die erforderliche Websitesteuerungsdateiressource oder das IResultObject-Objekt der Komponente abzurufen.

  3. Aktualisieren Sie mithilfe des IResultObject die Websitesteuerungsdatei.

  4. Verwenden Sie die IResultObject-Objektput-Methode, um die Änderungen zu übernehmen.

Beispiel

Das folgende C#-Beispiel greift auf die Client-Agent-Komponente der Websitesteuerungsdatei zu und erstellt eine Dummyeigenschaft, eine Eigenschaftsliste und eine Multistring-Liste. Anschließend werden die vorgenommenen Aktualisierungen entfernt. Das Beispiel zeigt, wie Sie die Websitesteuerungsdatei abfragen, Aktualisierungen vornehmen und Änderungen an der Websitesteuerungsdatei übernehmen.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager-Codeausschnitten.

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

Die Beispielmethode hat die folgenden Parameter:

Parameter Typ Beschreibung
connection - WqlConnectionManager Eine gültige Verbindung mit dem SMS-Anbieter.
siteCode - String Der Standortcode für den Configuration Manager-Standort.

Kompilieren des Codes

Namespaces

System

System.Collections.Generic

System.Collections

System.ComponentModel

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Robuste Programmierung

Die Configuration Manager-Ausnahmen, die ausgelöst werden können, sind SmsConnectionException und SmsQueryException. Diese können zusammen mit SmsException abgefangen werden.

Siehe auch

Grundlagen des SMS-AnbietersInformationen zur Configuration Manager Site Control-DateiHerstellen einer Verbindung mit einem Configuration Manager Anbieter mithilfe von verwaltetem CodeLesen einer Configuration Manager Websitesteuerungsdatei Übersicht über eingebetteteEigenschaftenliste Objekte