Compartilhar via


Como Criar uma Variável de Coleção no Configuration Manager

Pode criar uma variável de coleção para uma coleção de Configuration Manager ao adicionar instâncias da Classe WMI de Servidor SMS_CollectionVariable à CollectionVariables propriedade da Classe WMI de Servidor SMS_CollectionSettings.

Para criar uma variável de coleção

  1. Configure uma ligação ao Fornecedor de SMS. Para obter mais informações, veja Noções básicas do Fornecedor de SMS.

  2. Obtenha uma instância de SMS_CollectionSettings.

  3. Para adicionar cada variável, adicione instâncias do objeto incorporado SMS_CollectionVariable à propriedade de matriz CollectionVariables .

  4. Consolide as alterações à instância de SMS_CollectionSettings classe.

Exemplo

O método de exemplo seguinte cria uma variável de coleção e adiciona-a à coleção identificada pelo identificador fornecido. Se o SMS_CollectionSettings objeto da coleção não existir, será criado.

Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos de Código.

Sub CreateCollectionVariable( connection, name, value, mask, collectionId, precedence)

    Dim collectionSettings
    Dim collectionVariables
    Dim collectionVariable
    Dim Settings

    ' See if the settings collection already exists. if it does not, create it.
    Set settings = connection.ExecQuery _
      ("Select * From SMS_CollectionSettings Where CollectionID = '" & collectionID & "'")

    If settings.Count = 0 Then
        Wscript.Echo "Creating collection settings object"
        Set collectionSettings = connection.Get("SMS_CollectionSettings").SpawnInstance_
        collectionSettings.CollectionID = collectionId
        collectionSettings.Put_
    End If

    ' Get the collection settings object.
    Set collectionSettings = connection.Get("SMS_CollectionSettings.CollectionID='" & collectionId &"'" )

    ' Get the collection variables.
    collectionVariables=collectionSettings.CollectionVariables

    ' Create and populate a new collection variable.
    Set collectionVariable = connection.Get("SMS_CollectionVariable").SpawnInstance_
    collectionVariable.Name = name
    collectionVariable.Value = value
    collectionVariable.IsMasked = mask

    ' Add the new collection variable.
    ReDim Preserve collectionVariables (UBound (collectionVariables)+1)
    Set collectionVariables(UBound(collectionVariables)) = collectionVariable

    collectionSettings.CollectionVariables=collectionVariables

    collectionSettings.Put_

 End Sub
public void CreateCollectionVariable(
    WqlConnectionManager connection,
    string name,
    string value,
    bool mask,
    string collectionId,
    int precedence)
{
    try
    {
        IResultObject collectionSettings = null;

        // Get the collection settings. Create it if necessary.

         IResultObject collectionSettingsQuery = connection.QueryProcessor.ExecuteQuery(
                    "Select * from SMS_CollectionSettings where CollectionID='" + collectionId + "'");

         foreach (IResultObject setting in collectionSettingsQuery)
         {
             collectionSettings = setting;
         }

        if ( collectionSettings == null)
         {
             collectionSettings = connection.CreateInstance("SMS_CollectionSettings");
             collectionSettings["CollectionID"].StringValue = collectionId;
             collectionSettings.Put();
             collectionSettings.Get();
         }

        // Create the collection variable.
        List<IResultObject> collectionVariables = collectionSettings.GetArrayItems("CollectionVariables");
        IResultObject collectionVariable = connection.CreateEmbeddedObjectInstance("SMS_CollectionVariable");
        collectionVariable["Name"].StringValue = name;
        collectionVariable["Value"].StringValue = value;
        collectionVariable["IsMasked"].BooleanValue = mask;

        // Add the collection variable to the collection settings.
        collectionVariables.Add(collectionVariable);
        collectionSettings.SetArrayItems("CollectionVariables", collectionVariables);

        // Set the collection variable precedence.
        collectionSettings["CollectionVariablePrecedence"].IntegerValue = precedence;

        collectionSettings.Put();
    }
    catch (SmsException e)
    {
        Console.WriteLine("Failed to create collection variable: " + e.Message);
        throw;
   }
}

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.
Name - Gerido: String
- VBScript: String
O nome da variável a ser criada.
Value - Gerido: String
- VBScript: String
O valor da variável
Mask - Gerido: Boolean
- VBScript: Boolean
Especifica se o valor é apresentado na consola do Configuration Manager.

true - o valor da variável não é apresentado.

false - o valor da variável é apresentado.
CollectionID - Gerido: String
- VBScript: String
A coleção à qual a variável é adicionada.
Precedence - Gerido: Integer
- VBScript: Integer
A precedência da variável sobre outras variáveis na matriz.

Compilando o código

O exemplo de C# tem os seguintes requisitos de compilação:

Namespaces

System

System.Collections.Generic

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação robusta

Para obter mais informações sobre o processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).

Segurança do .NET Framework

Para obter mais informações sobre como proteger aplicações Configuration Manager, veja Configuration Manager administração baseada em funções.

Confira também

Descrição geral de ObjetosComo Ligar a um Fornecedor de SMS no Configuration Manager Utilizando Código GeridoComo Ligar a um Fornecedor de SMS no Configuration Manager Ao Utilizar a WMIComo Criar uma Variável de Computador no Configuration ManagerComo Criar um Configuration Manager Objeto com o Código GeridoComo Criar um Objeto de Configuration Manager Com a WMIAcerca da gestão de computadores de implementação do SO