Partager via


Guide pratique pour ajouter une condition à une étape de séquence de tâches de déploiement de système d’exploitation

Les conditions peuvent être ajoutées à une étape de déploiement de système d’exploitation (action et groupe), dans Configuration Manager, en créant une instance de classe SMS_TaskSequence_Condition, puis en l’associant à l’étape. Si les opérandes de condition sont tous remplis, l’étape est traitée ; sinon, ce n’est pas le cas. La condition peut avoir un ou plusieurs opérandes qui sont des instances de SMS_TaskSequence_Condition classes dérivées. Vous spécifiez des opérateurs pour les opérandes avec des instances de SMS_TaskSequence_ConditionOperator.

Pour ajouter une condition à une étape

  1. Configurez une connexion au fournisseur SMS. Pour plus d’informations, consultez Notions de base du fournisseur SMS.

  2. Obtenir un objet d’étape de séquence de tâches. Il peut s’agir d’un objet SMS_TaskSequence_Group pour un groupe ou d’un objet de classe SMS_TaskSequenceAction dérivé d’une action. Pour plus d’informations, consultez Comment ajouter une action de séquence de tâches de déploiement de système d’exploitation.

  3. Créez une condition en créant une instance de SMS_TaskSequence_Condition.

  4. Créez une expression pour la condition en créant une instance d’une classe dérivée SMS_TaskSequence_ConditionExpression . Par exemple, SMS_TaskSequence_RegistryConditionExpression.

  5. Remplissez les propriétés de l’expression.

  6. Ajoutez l’expression à la propriété condition Operands .

  7. Ajoutez la condition à la propriété Condition de la classe d’étape de séquence de tâches.

Exemple

L’exemple de méthode suivant ajoute une condition à une étape fournie qui détermine si la clé de Registre HKEY_LOCAL_MACHINE\MICROSOFT existe. L’expression SMS_TaskSequenc_RegistryCondition est utilisée pour spécifier la condition.

Pour plus d’informations sur l’appel de l’exemple de code, consultez Appel d’extraits de code Configuration Manager.

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

L’exemple de méthode a les paramètres suivants :

Paramètre Type Description
connection -Géré: WqlConnectionManager
- VBScript : SWbemServices
Connexion valide au fournisseur SMS.
taskSequenceStep -Géré: IResultObject
- VBScript : SWbemObject
Étape de séquence de tâches valide (SMS_TaskSequenceStep).

Compilation du code

L’exemple C# présente les exigences de compilation suivantes :

Espaces de noms

Système

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programmation robuste

Pour plus d’informations sur la gestion des erreurs, consultez À propos des erreurs Configuration Manager.

Sécurité de .NET Framework

Pour plus d’informations sur la sécurisation des applications Configuration Manager, consultez Configuration Manager’administration basée sur les rôles.

Voir aussi

Vue d’ensemble des objetsComment ajouter une action de séquence de tâches de déploiement de système d’exploitation
Comment se connecter à un fournisseur SMS dans Configuration Manager à l’aide de code managé
Comment se connecter à un fournisseur SMS dans Configuration Manager à l’aide de WMI
Vue d’ensemble de la séquence de tâches