Freigeben über


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

Bedingungen können einem Betriebssystembereitstellungsschritt (Aktion und Gruppe) in Configuration Manager hinzugefügt werden, indem eine SMS_TaskSequence_Condition Klasseninstanz erstellt und dann dem Schritt zugeordnet wird. Wenn alle Bedingungsopernden 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 Instanz von SMS_TaskSequence_Conditionerstellen.

  4. Erstellen Sie einen Ausdruck für die Bedingung, indem Sie eine Instanz 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 -Verwalteten: WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
taskSequenceStep -Verwalteten: IResultObject
– VBScript: SWbemObject
Ein gültiger Tasksequenzschritt (SMS_TaskSequenceStep).

Kompilieren des Codes

Das C#-Beispiel hat 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übersicht: Hinzufügen einer Tasksequenzaktion für die Betriebssystembereitstellung
Herstellen einer Verbindung mit einem SMS-Anbieter in Configuration Manager mithilfe von verwaltetem Code
Herstellen einer Verbindung mit einem SMS-Anbieter in Configuration Manager mithilfe von WMI
Übersicht über Aufgabensequenzen