如何部署站点系统角色 (示例:回退状态点)

站点的特性和功能由应用于站点的站点角色决定。 站点可以包含一个或多个站点角色。 某些角色依赖于其他角色。 有关特定站点角色的详细信息,请参阅为Configuration Manager配置站点和层次结构

配置站点是通过 Windows Management Instrumentation (WMI) 类执行的。 例如,SMS_SCI_Component服务器 WMI 类保存有关存储在Configuration Manager站点服务器上的服务器组件的信息。 这些类派生自 SMS_SiteControlItem 服务器 WMI 类。 有关详细信息,请参阅 Configuration Manager站点配置服务器 WMI 类

注意

在早期版本的 Configuration Manager中,SMS_SiteControlFileWMI 类用于接收站点配置的最新副本、更新站点的配置以及管理更新会话。 不再需要这样做,因为对站点配置所做的更改会立即写入数据库,并且不再使用文件。

网站控件项通常对单个设置、嵌入属性、属性列表和多字符串列表使用三种类型的属性。 使用以下类访问它们:

类型 WMI 类
Embedded 属性 SMS_EmbeddedProperty服务器 WMI 类
嵌入属性列表 SMS_EmbeddedPropertyList服务器 WMI 类 (数组)
多字符串列表 SMS_Client_Reg_MultiString_List服务器 WMI 类 (数组)

部署站点角色

  1. 设置与 SMS 提供程序的连接。

  2. 创建 WMI 类的 SMS_SCI_SysResUse 实例

  3. NALPath设置 、NALTypeRoleNameSitecode 属性。

  4. 根据所选角色,设置正确的嵌入属性或嵌入属性列表值。

  5. 保存角色。

示例

以下示例创建角色 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 类
关于站点控制文件