Como implantar uma função de sistema de site (exemplo: Ponto de status de fallback)

Os recursos e os recursos de um site são determinados pelas funções de site aplicadas a ele. Um site pode conter uma ou mais funções de site. Algumas funções dependem de outras funções. Para obter mais informações sobre funções de site específicas, consulte Configure sites and hierarchies for Configuration Manager.

A configuração de um site é realizada por meio de Windows de Instrumentação de Gerenciamento (WMI). Por exemplo, SMS_SCI_Component Classe WMI do Servidor contém informações sobre os componentes do servidor armazenados em um servidor de site do Configuration Manager. Essas classes derivam da classe WMIdo SMS_SiteControlItem Server. Para obter mais informações, consulte Configuration Manager Site Configuration Server WMI Classes.

Observação

Em versões anteriores do Configuration Manager, a classe WMI era usada para receber a cópia mais recente da configuração de um site, atualizar a configuração de um site e gerenciar sessões SMS_SiteControlFile de atualização. Isso não é mais necessário, pois as alterações feitas na configuração de um site são imediatamente escritas no banco de dados e um arquivo não é mais usado.

Os itens de controle de site geralmente usam propriedades de três tipos para configurações individuais, propriedades incorporadas, listas de propriedades e listas de várias cadeias de caracteres. Eles são acessados usando as seguintes classes:

Tipo Classe WMI
Propriedade Embedded SMS_EmbeddedProperty Server WMI Class
Lista de propriedades incorporadas SMS_EmbeddedPropertyList Server WMI Class (matriz)
Lista de várias cadeias de caracteres SMS_Client_Reg_MultiString_List Server WMI Class (matriz)

Para implantar uma função de site

  1. Configurar uma conexão com o Provedor de SMS.

  2. Criar uma instância da SMS_SCI_SysResUse classe WMI

  3. De definir NALPath as propriedades , , e NALType RoleName Sitecode .

  4. Dependendo da função escolhida, de definir as propriedades incorporadas corretas ou os valores da lista de propriedades incorporadas.

  5. Salve a função.

Exemplo

O exemplo a seguir cria uma Fallback Status Point função:

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;}  

O método example tem os seguintes parâmetros:

Parâmetro Tipo Descrição
connection - Gerenciado: WqlConnectionManager
- VBScript: SWbemServices
Uma conexão válida com o Provedor de SMS.
computerName String O nome do servidor do site.
siteCode String O código do site.
domainName String O nome de domínio totalmente qualificado do servidor do site.

Compilando o código

O C# exemplo exige:

Namespaces

System.Collections.Generic

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

adminui.wqlqueryengine

microsoft.configurationmanagement.managementprovider

Programação robusta

Para obter mais informações sobre o tratamento de erros, consulte About Configuration Manager Errors.

Confira também

SMS_EmbeddedProperty Server WMI Class
SMS_SCI_SysResUse Server WMI Class
Sobre o arquivo de controle do site