如何部署站点系统角色 (示例:回退状态点)
站点的特性和功能由应用于站点的站点角色决定。 站点可以包含一个或多个站点角色。 某些角色依赖于其他角色。 有关特定站点角色的详细信息,请参阅为Configuration Manager配置站点和层次结构。
配置站点是通过 Windows Management Instrumentation (WMI) 类执行的。 例如,SMS_SCI_Component服务器 WMI 类保存有关存储在Configuration Manager站点服务器上的服务器组件的信息。 这些类派生自 SMS_SiteControlItem 服务器 WMI 类。 有关详细信息,请参阅 Configuration Manager站点配置服务器 WMI 类。
注意
在早期版本的 Configuration Manager中,SMS_SiteControlFile
WMI 类用于接收站点配置的最新副本、更新站点的配置以及管理更新会话。 不再需要这样做,因为对站点配置所做的更改会立即写入数据库,并且不再使用文件。
网站控件项通常对单个设置、嵌入属性、属性列表和多字符串列表使用三种类型的属性。 使用以下类访问它们:
类型 | WMI 类 |
---|---|
Embedded 属性 | SMS_EmbeddedProperty服务器 WMI 类 |
嵌入属性列表 | SMS_EmbeddedPropertyList服务器 WMI 类 (数组) |
多字符串列表 | SMS_Client_Reg_MultiString_List服务器 WMI 类 (数组) |
部署站点角色
设置与 SMS 提供程序的连接。
创建 WMI 类的
SMS_SCI_SysResUse
实例NALPath
设置 、NALType
、RoleName
和Sitecode
属性。根据所选角色,设置正确的嵌入属性或嵌入属性列表值。
保存角色。
示例
以下示例创建角色 Fallback Status Point
:
Sub CreateRole(connection, computerName, siteCode, domainName) Dim role Dim props ' Create an instance of the class that defines a role Set role = connection.Get("SMS_SCI_SysResUse").SpawnInstance_() ' Configure the basic information of a role role.NALPath = "[""Display=\\" & computerName & "." & domainName & "\""]MSWNET:[""SMS_SITE=" & siteCode & """]\\" & computerName & "." & domainName & "\" role.NALType = "Windows NT Server" role.RoleName = "SMS Fallback Status Point" role.Sitecode = siteCode ' Initialize the properties array props = Array() ' Add each required property to the array SetProperty connection, props, "FSPInternetFacing", 0, "", "" SetProperty connection, props, "Throttle Count", 10000, "", "" SetProperty connection, props, "Throttle Interval", 3600000, "", "" SetProperty connection, props, "Server Remote Name", 0, computerName & "." & domainName, "" ' Set the role's properties and commit the role role.Props = props role.Put_ ' Cleanup Set role = Nothing Set props = NothingEnd SubSub SetProperty(connection, propsArray, propertyName, intValue, strValue1, strValue2) Dim index Dim foundProperty Dim newProperty foundProperty = False ' Loop through properties until a match is found and then set the properties using the values passed in. For index = 0 to UBound(propsArray) If propsArray(index).PropertyName = propertyName then foundProperty = true propsArray(index).Value = intValue propsArray(index).Value1 = strValue1 propsArray(index).Value2 = strValue2 Exit For End if Next ' If the property does not exist, then create it and set the property values using the values passed in. If not foundProperty then Set newProperty = connection.Get("SMS_EmbeddedProperty").SpawnInstance_ newProperty.PropertyName = propertyName newProperty.Value = intValue newProperty.Value1 = strValue1 newProperty.Value2 = strValue2 ReDim Preserve propsArray(UBound(propsArray) + 1) Set propsArray(UBound(propsArray)) = newProperty End if ' Cleanup Set newProperty = NothingEnd Sub
public void CreateRole(WqlConnectionManager connection, string computerName, string siteCode, string domainName){ IResultObject role = connection.CreateInstance("SMS_SCI_SysResUse"); string fqdn = computerName + "." + domainName; role.Properties["NALPath"].StringValue = string.Format(@"[""Display=\\{0}\""]MSWNET:[""SMS_SITE={1}""]\\{0}\", fqdn, siteCode); role.Properties["NALType"].StringValue = "Windows NT Server"; role.Properties["RoleName"].StringValue = "SMS Fallback Status Point"; role.Properties["Sitecode"].StringValue = siteCode; WriteEmbeddedProperty(role, "FSPInternetFacing", 0, "", ""); WriteEmbeddedProperty(role, "Throttle Count", 10000, "", ""); WriteEmbeddedProperty(role, "Throttle Interval", 3600000, "", ""); WriteEmbeddedProperty(role, "Server Remote Name", 0, fqdn, ""); role.Put();}public void WriteEmbeddedProperty(IResultObject container, string propertyName, int value, string value1, string value2){ // Get the property, or create it. IResultObject newProperty; Dictionary<string, IResultObject> propertiesCopy = container.EmbeddedProperties; if (propertiesCopy.ContainsKey(propertyName)) { newProperty = propertiesCopy[propertyName]; } else { newProperty = container.ConnectionManager.CreateEmbeddedObjectInstance("SMS_EmbeddedProperty"); propertiesCopy.Add(propertyName, newProperty); } newProperty["PropertyName"].StringValue = propertyName; newProperty["Value"].IntegerValue = value; newProperty["Value1"].StringValue = value1; newProperty["Value2"].StringValue = value2; container.EmbeddedProperties = propertiesCopy;}
示例方法具有以下参数:
参数 | 类型 | 说明 |
---|---|---|
connection |
-管理: WqlConnectionManager - VBScript: SWbemServices |
与 SMS 提供程序的有效连接。 |
computerName |
String |
站点服务器的名称。 |
siteCode |
String |
站点代码。 |
domainName |
String |
站点服务器的完全限定域名。 |
编译代码
C# 示例需要:
命名空间
System.Collections.Generic
Microsoft。ConfigurationManagement.ManagementProvider
Microsoft。ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
adminui.wqlqueryengine
microsoft.configurationmanagement.managementprovider
可靠编程
有关错误处理的详细信息,请参阅关于Configuration Manager错误。
另请参阅
SMS_EmbeddedProperty服务器 WMI 类
SMS_SCI_SysResUse服务器 WMI 类
关于站点控制文件