Så här skapar du en samlingsvariabel i Configuration Manager

Du skapar en samlingsvariabel för en Configuration Manager-samling genom att lägga till instanser av SMS_CollectionVariable Server WMI-klass i CollectionVariables egenskapen för SMS_CollectionSettings Server WMI-klass.

Så här skapar du en samlingsvariabel

  1. Konfigurera en anslutning till SMS-leverantören. Mer information finns i Grunderna för SMS-providern.

  2. Hämta en instans av SMS_CollectionSettings.

  3. För varje variabel som ska läggas till lägger du till instanser av det inbäddade objektet SMS_CollectionVariable i matrisegenskapen CollectionVariables .

  4. Checka in ändringarna i klassinstansen SMS_CollectionSettings .

Exempel

Följande exempelmetod skapar en samlingsvariabel och lägger till den i samlingen som identifieras av den angivna identifieraren. SMS_CollectionSettings Om objektet för samlingen inte finns skapas det.

Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.

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

Exempelmetoden har följande parametrar:

Parameter Typ Beskrivning
Connection - Hanterad: WqlConnectionManager
- VBScript: SWbemServices
En giltig anslutning till SMS-leverantören.
Name - Hanterad: String
- VBScript: String
Namnet på variabeln som ska skapas.
Value - Hanterad: String
- VBScript: String
Variabelns värde
Mask - Hanterad: Boolean
- VBScript: Boolean
Anger om värdet visas i konsolen Configuration Manager.

true - Det variabla värdet visas inte.

false - Variabelvärdet visas.
CollectionID - Hanterad: String
- VBScript: String
Den samling som variabeln läggs till i.
Precedence - Hanterad: Integer
- VBScript: Integer
Variabelns prioritet framför andra variabler i matrisen.

Kompilerar koden

C#-exemplet har följande kompileringskrav:

Namnområden

System

System.Collections.Generic

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Montering

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Robust programmering

Mer information om felhantering finns i Om Configuration Manager fel.

.NET Framework Security

Mer information om hur du skyddar Configuration Manager program finns i Configuration Manager rollbaserad administration.

Se även

Översikt över objektSå här ansluter du till en SMS-provider i Configuration Manager med hjälp av hanterad kodSå här ansluter du till en SMS-provider i Configuration Manager med WMISkapa en datorvariabel i Configuration ManagerSåhär skapar du en Configuration Manager-objekt med hjälp av hanterad kodSkapa ett Configuration Manager-objekt med WMIOm OS-distribution datorhantering