次の方法で共有


マネージド コードを使用してConfiguration Manager サイト コントロール ファイルの読み取りと書き込みを行う方法

マネージド SMS プロバイダーを使用してConfiguration Managerサイト コントロール ファイルに書き込むには、必要なリソースまたはコンポーネントを照会してサイト定義ファイルを取得します。 次に、必要に応じて、埋め込みプロパティ、埋め込みプロパティ リスト、または複数文字列リストを更新します。

注:

接続マネージャー GetInstance を使用して、必要なリソースまたはコンポーネントを取得することもできます。

マネージド Configuration Managerは、サイトコントロール ファイルへの接続セッションを自動的に管理します。 そのため、SMS プロバイダーから取得した IResultObject オブジェクトを扱うのと同じ方法で、クエリから返された IResultObject オブジェクトを扱います。

サイト コントロール ファイルの読み取りと書き込み

  1. SMS プロバイダーへの接続を設定します。 詳細については、「マネージド コードを使用してConfiguration Managerで SMS プロバイダーに接続する方法」を参照してください。

  2. 接続マネージャー QueryProcessor オブジェクト ExecQuery または GetInstance メソッドを使用して、必要なサイト コントロール ファイル リソースまたはコンポーネント IResultObject オブジェクトを取得します。

  3. IResultObject を使用すると、サイト コントロール ファイルが更新されます。

  4. 変更をコミットするには、 IResultObject オブジェクト Put メソッドを使用します。

次の C# の例では、サイト コントロール ファイルのクライアント エージェント コンポーネントにアクセスし、ダミー プロパティ、プロパティ リスト、および複数文字列リストを作成します。 その後、行われた更新プログラムが削除されます。 この例では、サイト コントロール ファイルに対してクエリを実行し、更新を行い、サイト コントロール ファイルに変更をコミットする方法を示します。

サンプル コードの呼び出しについては、「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;  
    }  
}  

このメソッドの例には、次のパラメーターがあります。

パラメーター 説明
connection - WqlConnectionManager SMS プロバイダーへの有効な接続。
siteCode - String Configuration Manager サイトのサイト コード。

コードのコンパイル

名前空間

System

System.Collections.Generic

System.collections

System.ComponentModel

Microsoft。ConfigurationManagement.ManagementProvider

Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

堅牢なプログラミング

発生できるConfiguration Manager例外は、SmsConnectionExceptionSmsQueryException です。 これらは SmsException と一緒にキャッチできます。

関連項目

SMS プロバイダーの基礎Configuration Manager サイトコントロール ファイルについて
マネージド コードを使用してConfiguration Manager プロバイダーに接続する方法
Configuration Manager サイト コントロール ファイルの埋め込みプロパティ リストを読み取る方法
オブジェクトの概要