Compartilhar via


Como Implementar uma Função do Sistema de Sites (Exemplo: Ponto de Estado de Contingência)

As funcionalidades e capacidades de um site são determinadas pelas funções de site que lhe são aplicadas. 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, veja Configurar sites e hierarquias para Configuration Manager.

A configuração de um site é efetuada através das classes Windows Management Instrumentation (WMI). Por exemplo, SMS_SCI_Component Classe WMI de Servidor contém informações sobre os componentes do servidor armazenados num servidor de site Configuration Manager. Estas classes derivam da Classe WMI de Servidor SMS_SiteControlItem. Para obter mais informações, veja Configuration Manager Classes WMI de Servidor de Configuração do Site.

Observação

Em versões anteriores do Configuration Manager, a SMS_SiteControlFile classe WMI foi utilizada para receber a cópia mais recente da configuração de um site, para atualizar a configuração de um site e para gerir sessões de atualização. Isto já não é necessário, uma vez que as alterações efetuadas à configuração de um site são escritas imediatamente na base de dados e um ficheiro já não é utilizado.

Geralmente, os itens de controlo de sites utilizam propriedades de três tipos para definições individuais, propriedades incorporadas, listas de propriedades e listas de várias cadeias. São acedidos através das seguintes classes:

Tipo Classe WMI
Propriedade incorporada Classe WMI de Servidor SMS_EmbeddedProperty
Lista de propriedades incorporadas Classe WMI de Servidor SMS_EmbeddedPropertyList (matriz)
Lista de múltiplas cadeias Classe WMI de Servidor SMS_Client_Reg_MultiString_List (matriz)

Para implementar uma função de site

  1. Configure uma ligação ao Fornecedor de SMS.

  2. Criar uma instância da SMS_SCI_SysResUse classe WMI

  3. Defina as NALPathpropriedades , NALType, RoleNamee Sitecode .

  4. Consoante a função escolhida, defina as propriedades incorporadas corretas ou os valores da lista de propriedades incorporadas.

  5. Guarde a função.

Exemplo

O exemplo seguinte 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 de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
connection - Gerido: WqlConnectionManager
- VBScript: SWbemServices
Uma ligação válida ao Fornecedor de SMS.
computerName String O nome do servidor do site.
siteCode String O código do site.
domainName String O nome de domínio completamente qualificado do servidor do site.

Compilando o código

O exemplo de C# requer:

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 processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).

Confira também

Classe WMI de Servidor SMS_SCI_SysResUse de Servidor SMS_EmbeddedProperty deServidor SMS_EmbeddedPropertySobre o ficheiro de controlo de site