分享方式:


如何使用 Managed 程式碼讀取和寫入Configuration Manager月臺控制檔案

若要使用受控 SMS 提供者寫入Configuration Manager月臺控制檔案,您可以藉由查詢所需的資源或元件來取得網站定義檔。 然後視需要更新內嵌屬性、內嵌屬性清單或多字串清單。

注意事項

您也可以使用連接管理員 GetInstance 來取得所需的資源或元件。

Managed Configuration Manager會自動為您管理月臺控制檔案的連線會話。 因此,您處理從查詢傳 回的 IResultObject 物件的方式,與處理從 SMS 提供者擷取的 IResultObject 物件的方式相同。

讀取和寫入月臺控制檔案

  1. 設定與 SMS 提供者的連線。 如需詳細資訊,請參閱How to Connect to an SMS Provider in Configuration Manager by Using Managed Code

  2. 使用 連線管理員QueryProcessor物件ExecQueryGetInstance方法來取得必要的月臺控制檔案資源或元件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;  
    }  
}  

範例方法具有下列參數:

參數 Type 描述
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一起攔截。

另請參閱

關於Configuration Manager月臺控制檔案的SMS 提供者基本概念
如何使用 Managed 程式碼連線到Configuration Manager提供者
如何讀取Configuration Manager控制項檔案內嵌屬性清單
物件概觀