Come creare una variabile di raccolta in Configuration Manager

È possibile creare una variabile di insieme per un insieme di Configuration Manager aggiungendo istanze di SMS_CollectionVariable classe WMI del server alla CollectionVariables proprietà di SMS_CollectionSettings classe WMI del server.

Per creare una variabile di raccolta

  1. Configurare una connessione al provider SMS. Per altre informazioni, vedere Nozioni fondamentali sul provider SMS.

  2. Ottenere un'istanza di SMS_CollectionSettings.

  3. Per ogni variabile da aggiungere, aggiungere istanze dell'oggetto incorporato SMS_CollectionVariable alla proprietà di matrice CollectionVariables .

  4. Esegui il commit delle modifiche nell'istanza della SMS_CollectionSettings classe.

Esempio

Il metodo di esempio seguente crea una variabile di insieme e la aggiunge all'insieme identificato dall'identificatore fornito. Se l'oggetto per la SMS_CollectionSettings raccolta non esiste, viene creato.

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice di 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;
   }
}

Il metodo di esempio include i parametri seguenti:

Parametro Tipo Descrizione
Connection - Gestito: WqlConnectionManager
- VBScript: SWbemServices
Una connessione valida al provider SMS.
Name - Gestito: String
- VBScript: String
Nome della variabile da creare.
Value - Gestito: String
- VBScript: String
Il valore della variabile
Mask - Gestito: Boolean
- VBScript: Boolean
Specifica se il valore viene visualizzato nella console di Configuration Manager.

true - Il valore della variabile non viene visualizzato.

false - viene visualizzato il valore della variabile.
CollectionID - Gestito: String
- VBScript: String
Raccolta a cui viene aggiunta la variabile.
Precedence - Gestito: Integer
- VBScript: Integer
La precedenza della variabile rispetto ad altre variabili nella matrice.

Compilazione del codice

L'esempio di C# presenta i requisiti di compilazione seguenti:

Spazi dei nomi

Sistema

System.Collections.Generic

Microsoft.ConfigurationManagementManagementProvider

Microsoft.ConfigurationManagementManagementProvider.WqlQueryEngine

Assembly

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Programmazione efficiente

Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.

Sicurezza di .NET Framework

Per altre informazioni sulla protezione delle applicazioni di Configuration Manager, vedere Amministrazione basata sui ruoli di Configuration Manager.

Vedere anche

Panoramica degli oggettiCome connettersi a un provider SMS in Configuration Manager tramite codice gestitoCome connettersi a un provider SMS in Configuration Manager tramite WMICome creare una variabile computer in Configuration ManagerComecreare un Oggetto di Configuration Manager tramite codice gestitoCreazione di un oggetto di Configuration Manager tramite WMIInformazioni sulla distribuzione del sistema operativo Gestione computer