Delen via


Een voorwaarde toevoegen aan een takenreeksstap voor een besturingssysteemimplementatie

Voorwaarden kunnen worden toegevoegd aan een implementatiestap van een besturingssysteem (actie en groep) in Configuration Manager door een SMS_TaskSequence_Condition klasse-exemplaar te maken en deze vervolgens te koppelen aan de stap. Als aan de voorwaarde operanden wordt voldaan, wordt de stap verwerkt; anders niet. De voorwaarde kan een of meer operanden hebben die exemplaren zijn van SMS_TaskSequence_Condition afgeleide klassen. U geeft operatoren op voor de operanden met exemplaren van SMS_TaskSequence_ConditionOperator.

Een voorwaarde toevoegen aan een stap

  1. Een verbinding met de SMS-provider instellen. Zie Basisprincipes van SMS-provider voor meer informatie.

  2. Een takenreeksstapobject ophalen. Dit kan een SMS_TaskSequence_Group-object voor een groep zijn of een SMS_TaskSequenceAction afgeleid klasseobject voor een actie. Zie Een takenreeksactie voor besturingssysteemimplementatie toevoegen voor meer informatie.

  3. Maak een nieuwe voorwaarde door een exemplaar van SMS_TaskSequence_Conditionte maken.

  4. Maak een expressie voor de voorwaarde door een exemplaar van een SMS_TaskSequence_ConditionExpression afgeleide klasse te maken. Bijvoorbeeld SMS_TaskSequence_RegistryConditionExpression.

  5. Vul de expressie-eigenschappen in.

  6. Voeg de expressie toe aan de eigenschap Voorwaarde Operands .

  7. Voeg de voorwaarde toe aan de eigenschap Voorwaarde van de takenreeksstapklasse.

Voorbeeld

Met de volgende voorbeeldmethode wordt een voorwaarde toegevoegd aan een opgegeven stap die bepaalt of de HKEY_LOCAL_MACHINE\MICROSOFT registersleutel bestaat. De SMS_TaskSequenc_RegistryCondition-expressie wordt gebruikt om de voorwaarde op te geven.

Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.

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

De voorbeeldmethode heeft de volgende parameters:

Parameter Type Beschrijving
connection -Beheerd: WqlConnectionManager
- VBScript: SWbemServices
Een geldige verbinding met de SMS-provider.
taskSequenceStep -Beheerd: IResultObject
- VBScript: SWbemObject
Een geldige takenreeksstap (SMS_TaskSequenceStep).

De code compileren

Het C#-voorbeeld heeft de volgende compilatievereisten:

Naamruimten

Systeem

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Vergadering

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Robuust programmeren

Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.

.NET Framework Beveiliging

Zie Configuration Manager op rollen gebaseerd beheer voor meer informatie over het beveiligen van Configuration Manager toepassingen.

Zie ook

Overzicht van objectenEen takenreeksactie voor de implementatie van een besturingssysteem toevoegen
Verbinding maken met een SMS-provider in Configuration Manager met behulp van beheerde code
Verbinding maken met een SMS-provider in Configuration Manager met behulp van WMI
Takenreeksoverzicht