관리 코드를 사용하여 Configuration Manager 사이트 제어 파일에 읽고 쓰는 방법

관리되는 SMS 공급자를 사용하여 Configuration Manager 사이트 제어 파일에 쓰려면 필요한 리소스 또는 구성 요소를 쿼리하여 사이트 정의 파일을 가져옵니다. 그런 다음 필요에 따라 포함된 속성, 포함된 속성 목록 또는 다중 문자열 목록을 업데이트합니다.

참고

연결 관리자 GetInstance 를 사용하여 필요한 리소스 또는 구성 요소를 가져올 수도 있습니다.

관리되는 Configuration Manager 자동으로 사이트 제어 파일에 대한 연결 세션을 관리합니다. 따라서 SMS 공급자에서 검색된 IResultObject 개체를 처리하는 것과 동일한 방식으로 쿼리에서 반환된 IResultObject 개체를 처리합니다.

사이트 컨트롤 파일을 읽고 쓰려면

  1. SMS 공급자에 대한 연결을 설정합니다. 자세한 내용은 관리 코드를 사용하여 Configuration Manager SMS 공급자에 연결하는 방법을 참조하세요.

  2. 필요한 사이트 제어 파일 리소스 또는 구성 요소 IResultObject 개체를 얻으려면 연결 관리자 QueryProcessor 개체 ExecQuery 또는 GetInstance 메서드를 사용합니다.

  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.Collections.Generic

System.Collections

System.ComponentModel

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

어셈블리

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

강력한 프로그래밍

발생할 수 있는 Configuration Manager 예외는 SmsConnectionExceptionSmsQueryException입니다. SmsException과 함께 사용할 수 있습니다.

참고 항목

SMS 공급자 기본 사항Configuration Manager 사이트 제어 파일 정보
관리 코드를 사용하여 Configuration Manager 공급자에 연결하는 방법
Configuration Manager 사이트 제어 파일 포함된 속성 목록을 읽는 방법
개체 개요