Freigeben über


Hinzufügen einer Bedingung zu einem Tasksequenzschritt für die Betriebssystembereitstellung

Bedingungen können einem Schritt für die Betriebssystembereitstellung (Aktion und Gruppe) in Configuration Manager hinzugefügt werden, indem eine SMS_TaskSequence_Condition Klasse instance erstellt und dann dem Schritt zugeordnet wird. Wenn die Bedingungsopernden alle erfüllt sind, wird der Schritt verarbeitet. andernfalls nicht. Die Bedingung kann einen oder mehrere Operanden aufweisen, die Instanzen von SMS_TaskSequence_Condition abgeleiteten Klassen sind. Sie geben Operatoren für die Operanden mit Instanzen von SMS_TaskSequence_ConditionOperator an.

So fügen Sie einem Schritt eine Bedingung hinzu

  1. Richten Sie eine Verbindung mit dem SMS-Anbieter ein. Weitere Informationen finden Sie unter Grundlagen des SMS-Anbieters.

  2. Abrufen eines Tasksequenzschrittobjekts. Dies kann ein SMS_TaskSequence_Group-Objekt für eine Gruppe oder ein SMS_TaskSequenceAction abgeleitetes Klassenobjekt für eine Aktion sein. Weitere Informationen finden Sie unter Hinzufügen einer Tasksequenzaktion für die Betriebssystembereitstellung.

  3. Erstellen Sie eine neue Bedingung, indem Sie eine instance von SMS_TaskSequence_Conditionerstellen.

  4. Erstellen Sie einen Ausdruck für die Bedingung, indem Sie eine instance einer SMS_TaskSequence_ConditionExpression abgeleiteten Klasse erstellen. Beispiel: SMS_TaskSequence_RegistryConditionExpression.

  5. Füllen Sie die Ausdruckseigenschaften auf.

  6. Fügen Sie den Ausdruck der Operanden-Eigenschaft der Bedingung hinzu.

  7. Fügen Sie die Bedingung der Condition-Eigenschaft der Tasksequenzschrittklasse hinzu.

Beispiel

Die folgende Beispielmethode fügt einem angegebenen Schritt eine Bedingung hinzu, die bestimmt, ob der HKEY_LOCAL_MACHINE\MICROSOFT Registrierungsschlüssel vorhanden ist. Der SMS_TaskSequenc_RegistryCondition Ausdruck wird verwendet, um die Bedingung anzugeben.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.

Sub AddRegistryCondition (connection, taskSequenceStep)

    Dim condition
    Dim registryExpression
    Dim operands

    ' Get or create the condition.
    if IsNull ( taskSequenceStep.Condition) Then
       Set condition = connection.Get("SMS_TaskSequence_Condition").SpawnInstance_
    Else
        Set condition = taskSequenceStep.Condition
    End If

    ' Populate the condition.
    Set registryExpression=connection.Get("SMS_TaskSequence_RegistryConditionExpression").SpawnInstance_
    registryExpression.KeyPath="HKEY_LOCAL_MACHINE\MICROSOFT"
    registryExpression.Operator="exists"
    registryExpression.Type="REG_SZ"
    registryExpression.Data=Null

    ' Add the condition.
    operands=Array(registryExpression)
    condition.Operands=operands
    taskSequenceStep.Condition=condition

End Sub
public void AddRegistryCondition(
    WqlConnectionManager connection,
    IResultObject taskSequenceStep)
{
    try
    {
        IResultObject condition;

        if (taskSequenceStep["Condition"].ObjectValue == null)
        {
            // Create a new condition.
            condition = connection.CreateEmbeddedObjectInstance("SMS_TaskSequence_Condition");
        }
        else
        {   // Get the existing condition.
            condition = taskSequenceStep.GetSingleItem("Condition");
        }

        // Create and populate the expression.
        IResultObject registryExpression = connection.CreateEmbeddedObjectInstance("SMS_TaskSequence_RegistryConditionExpression");

        registryExpression["KeyPath"].StringValue = @"HKEY_LOCAL_MACHINE\MICROSOFT";
        registryExpression["Operator"].StringValue = "exists";
        registryExpression["Type"].StringValue = "REG_SZ";
        registryExpression["Data"].StringValue = null;

        // Get the operands and add the expression.
        List<IResultObject> operands = condition.GetArrayItems("Operands");
        operands.Add(registryExpression);

        // Add the expresssion to the list of operands.
        condition.SetArrayItems("Operands", operands);

        // Add the condition to the sequence.
        taskSequenceStep.SetSingleItem("Condition", condition);
    }
    catch (SmsException e)
    {
        Console.WriteLine("Failed to create Task Sequence: " + e.Message);
        throw;
    }
}

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
connection -Gehandhabt: WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
taskSequenceStep -Gehandhabt: IResultObject
– VBScript: SWbemObject
Ein gültiger Tasksequenzschritt (SMS_TaskSequenceStep).

Kompilieren des Codes

Für das C#-Beispiel gelten die folgenden Kompilierungsanforderungen:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

.NET Framework-Sicherheit

Weitere Informationen zum Schützen Configuration Manager Anwendungen finden Sie unter Configuration Manager rollenbasierte Verwaltung.

Siehe auch

ObjektübersichtSo fügen Sie eine Tasksequenzaktion für die Betriebssystembereitstellung hinzu: Herstellen einer Verbindung mit einem SMS-Anbieter in Configuration Manager mithilfe von verwaltetem CodeHerstellen einer Verbindung mit einem SMS-Anbieter in Configuration Manager mithilfe der WMI-Tasksequenzübersicht