In System Center 2012 Configuration Manager, you write an embedded property list to a site control file resource by either updating the property list if it already exists, or by creating and adding a new property list to the resource's list of properties.
An embedded property list has the following properties that you can set. For more information, see SMS_EmbeddedPropertyList.
Value | Description |
---|---|
PropertyListName |
The embedded property name. |
Values |
An array of string values. Each array item represents a single property list item. |
Caution |
---|
Making changes to the site control file can cause irreparable damage to your System Center 2012 Configuration Manager site. |
To write a site control file embedded property list
-
Set up a connection to the SMS Provider. For more information, see About the SMS Provider in Configuration Manager.
-
Using the connection object from step one, get a site control file resource. For more information, see About the Configuration Manager Site Control File.
-
Get the SMS_EmbeddedPropertyList for the required embedded property list or, if it does not exist, create the SMS_EmbeddedPropertyList object.
-
Populate the SMS_EmbeddedPropertyList object.
-
Update the resources property lists with the SMS_EmbeddedPropertyList object.
-
Commit the changes to the site control file. For more information, see About the Configuration Manager Site Control File.
Example
The following example method writes an embedded property list to a supplied site control file resource (resource). The example works by finding the embedded property list (propertyListName) in the resource and then by replacing the existing values array with the supplied values array (values). If you want to add an item to an existing property values array, you will need to first get the array, resize it, and the add the new array element.
If the embedded property list does not exist, it is created, and then added to the list of existing resource embedded property list.
To view code that calls these methods, see How to Read and Write to the Configuration Manager Site Control File by Using Managed Code
How to Read and Write to the Configuration Manager Site Control File by Using WMI
For information about calling the sample code, see Calling Configuration Manager Code Snippets.
Visual Basic Script | Copy Code |
---|---|
Sub WriteScfEmbeddedPropertyList(connection, _ context, _ resource, _ propertyListName, _ values) Dim found Dim vProperty found = false For each vProperty in resource.PropLists if UCase(vProperty.PropertyListName) = UCase(propertyListName) Then ' Found property, so add the property list. vProperty.Values = values resource.Put_ , context found = true End If Next If found = False Then ' Property list does not exist, so create it. Dim embeddedPropertyList Set embeddedPropertyList = connection.Get("SMS_EmbeddedPropertyList").Spawninstance_() embeddedPropertyList.PropertyListName = propertyListName embeddedPropertyList.Values = values ' If needed, create the property list array. If ISNull (resource.PropLists) Then resource.PropLists = array(embeddedPropertyList) Else ' Add property list to existing property lists. dim propertyList propertyList = resource.PropLists redim preserve propertyList(Ubound (propertyList) +1) Set propertyList(Ubound(propertyList)) = embeddedPropertyList resource.Proplists = propertyList End If resource.Put_,context End If End Sub |
C# | Copy Code |
---|---|
public void WriteScfEmbeddedPropertyList( IResultObject resource, string propertyListName, ArrayList values ) { try { Dictionary<string, IResultObject> EmbeddedPropertyList = resource.EmbeddedPropertyLists; // Get the property list, or create it. IResultObject ropl; if (EmbeddedPropertyList.ContainsKey(propertyListName)) { ropl = EmbeddedPropertyList[propertyListName]; } else { ConnectionManagerBase connection = resource.ConnectionManager; ropl = connection.CreateEmbeddedObjectInstance("SMS_EmbeddedPropertyList"); EmbeddedPropertyList.Add(propertyListName, ropl); } // Set the property list properties. ropl["PropertyListName"].StringValue = propertyListName; ropl["Values"].StringArrayValue = (string[])values.ToArray(typeof(string)); resource.EmbeddedPropertyLists = EmbeddedPropertyList; resource.Put(); } catch (SmsException e) { Console.WriteLine("Failed to write property list: " + e.Message); throw; } } |
The example method has the following parameters:
Parameter |
Type |
Description |
connection |
|
A valid connection to the SMS Provider. |
swbemContext (VBScript) |
|
A valid context object. For more information, see How to Read and Write to the Configuration Manager Site Control File by Using WMI. |
Resource |
|
The site control file resource that contains the embedded property. |
propertyListName |
|
The embedded property list to be written to. |
Values |
|
The SMS_EmbeddedProperty class Values property. An array of string values. |
Compiling the Code
The C# example has the following compilation requirements:
Namespaces
System
System.Collections.Generic
System.Collections
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robust Programming
For more information about error handling, see About Configuration Manager Errors.
Security
For more information about securing Configuration Manager applications, see Securing Configuration Manager Applications.
See Also
Tasks
How to Read a Configuration Manager Site Control File Embedded PropertyHow to Read a Configuration Manager Site Control File Embedded Property List
How to Read a Configuration Manager Site Control File Embedded RegMultiString List
How to Write a Configuration Manager Site Control File Embedded Property
How to Write a Configuration Manager Site Control File Embedded RegMultiString List
How to Read and Write to the Configuration Manager Site Control File by Using Managed Code
How to Read and Write to the Configuration Manager Site Control File by Using WMI