若要使用受控 SMS 提供者寫入 Configuration Manager 月臺控制檔案,您可以查詢所需的資源或元件來取得網站定義檔案。 然後視需要更新內嵌屬性、內嵌屬性清單或多字串清單。
注意事項
您也可以使用連接管理員 GetInstance 來取得所需的資源或元件。
Managed Configuration Manager 會自動為您管理月臺控制檔案的聯機會話。 因此,您處理從查詢傳 回的 IResultObject 物件的方式,與處理從 SMS 提供者擷取的 IResultObject 物件的方式相同。
讀取和寫入月臺控制檔案
設定與SMS提供者的連線。 如需詳細資訊,請參閱 How to Connect to an SMS Provider in Configuration Manager by Using Managed Code。
使用 連線管理員 QueryProcessor 物件 ExecQuery 或 GetInstance 方法來取得必要的月臺控制檔案資源或元件 IResultObject 物件。
使用 IResultObject 更新月臺控制檔案。
使用 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 例外狀況為 SmsConnectionException 和 SmsQueryException。 這些可以與 SmsException一起攔截。
另請參閱
SMS 提供者基本概念關於 Configuration Manager 月臺控制檔案如何使用 Managed Code 連線到 Configuration Manager 提供者如何讀取 Configuration Manager 月臺控件檔案內嵌屬性清單物件概觀