Cómo crear una variable de colección en Configuration Manager

Para crear una variable de colección para una colección de Configuration Manager, agregue instancias de SMS_CollectionVariable clase WMI de servidor a la CollectionVariables propiedad de SMS_CollectionSettings clase WMI de servidor.

Para crear una variable de colección

  1. Configure una conexión al proveedor de SMS. Para obtener más información, consulte Aspectos básicos del proveedor de SMS.

  2. Obtener una instancia de SMS_CollectionSettings.

  3. Para cada variable que se va a agregar, agregue instancias del objeto incrustado SMS_CollectionVariable a la propiedad de la matriz CollectionVariables .

  4. Confirme los cambios en la instancia de clase SMS_CollectionSettings .

Ejemplo

El método de ejemplo siguiente crea una variable de colección y la agrega a la colección identificada por el identificador proporcionado. Si el SMS_CollectionSettings objeto de la colección no existe, se crea.

Para obtener información sobre cómo llamar al código de ejemplo, consulte Llamar a fragmentos de código de Configuration Manager.

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

El método de ejemplo tiene los siguientes parámetros:

Parámetro Tipo Descripción
Connection - Administrado: WqlConnectionManager
- VBScript: SWbemServices
Una conexión válida con el proveedor de SMS.
Name - Administrado: String
- VBScript: String
Nombre de la variable que se va a crear.
Value - Administrado: String
- VBScript: String
El valor de la variable
Mask - Administrado: Boolean
- VBScript: Boolean
Especifica si el valor se muestra en la consola de Configuration Manager.

true - No se muestra el valor de la variable.

false - Se muestra el valor de la variable.
CollectionID - Administrado: String
- VBScript: String
Colección a la que se agrega la variable.
Precedence - Administrado: Integer
- VBScript: Integer
La prioridad de la variable sobre otras variables de la matriz.

Compilar el código

El ejemplo de C# tiene los siguientes requisitos de compilación:

Espacios de nombres

System

System.Collections.Generic

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Ensamblado

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Programación sólida

Para obtener más información acerca del control de errores, consulte Acerca de los errores de Configuration Manager.

Seguridad de .NET Framework

Para obtener más información acerca de cómo proteger las aplicaciones de Configuration Manager, consulte Administración basada en roles de Configuration Manager.

Consulta también

Introducción a los objetosCómo conectarse a un proveedor de SMS en Configuration Manager mediante código administradoCómo conectarse a un proveedor de SMS en Configuration Manager mediante WMICómo crear una variable de equipo en ConfigurationManagerCómo crear un Objeto de Configuration Manager mediante código administradoCómo crear un objeto de Configuration Manager mediante WMIAcerca de la implementación del sistema operativo Administración de equipos