Réorganisation d’une séquence de tâches de déploiement de système d’exploitation

Dans Configuration Manager, vous pouvez réorganiser les étapes (une action ou un groupe) dans une séquence de tâches ou un groupe en réorganisant la séquence d’étapes dans le tableau SMS_TaskSequence_Step de propriétés Étapes.

Pour réorganiser une séquence de tâches

  1. Établissez une connexion au fournisseur SMS. Pour plus d’informations, consultez Principes de base du fournisseur SMS.

  2. Obtenir une séquence de tâches (SMS_TaskSequence) ou un groupe de séquences de tâches (SMS_TaskSequence_Group) valide. Pour plus d’informations, voir Comment lire une séquence de tâches à partir d’un package de séquence de tâches.

  3. Dans la propriété de tableau Steps , déplacez le SMS_TaskSequence_Step vers son nouvel emplacement.

  4. Mettez à jour la séquence de tâches ou le groupe.

Exemple

L’exemple suivant montre comment monter ou descendre d’un échelon au sein d’une séquence de tâches ou d’un groupe.

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

Sub MoveTaskSequenceStepDown(taskSequence, stepName)
   Dim index
   Dim osdStep
   Dim temp

    index=0

    ' If found, move the step down.
    for each osdStep in taskSequence.Steps
        If osdStep.Name=stepName Then
            If index < Ubound (TaskSequence.Steps) Then
                Set temp=osdStep
                taskSequence.Steps(index)=taskSequence.Steps(index+1)
                taskSequence.Steps(index+1)=temp
                Exit For
           End If
        End If

        index=index+1
    next
End Sub

Sub MoveTaskSequenceStepUp(taskSequence, stepName)
    Dim index
    Dim osdStep
    Dim temp

    index=0

    ' If found, move the step up.
    for Each osdStep In taskSequence.Steps
        If osdStep.Name=stepName Then
            If index >1 Then
                Set temp=osdStep
                taskSequence.Steps(index)=taskSequence.Steps(index-1)
                taskSequence.Steps(index-1)=temp
                Exit For
           End If
        End If

        index=index+1

    next
End Sub
public void MoveTaskSequenceStepDown(
    IResultObject taskSequence,
    string taskSequenceStepName)
{
    try
    {
        // Get the task sequence steps.
        List<IResultObject> steps = taskSequence.GetArrayItems("Steps"); // Array of SMS_TaskSequence_Steps.

        int index = 0;

        // Scan through the steps to find the step to move down.
        foreach (IResultObject ro in steps)
        {
            if (ro["Name"].StringValue == taskSequenceStepName)
            {
                // Move the step.
                if (index < steps.Count - 1) // Not at end, so we can flip.
                {
                    steps.Insert(index + 2, steps[index]);
                    steps.Remove(steps[index]);
                    taskSequence.SetArrayItems("Steps", steps);
                    break;
                }
            }

            index++;
        }
    }
    catch (SmsException e)
    {
        Console.WriteLine("Failed To enumerate task sequence items: " + e.Message);
        throw;
    }
}

public void MoveTaskSequenceStepUp(
    IResultObject taskSequence,
    string taskSequenceStepName)
{
    try
    {
        // Get the task sequence steps.
        List<IResultObject> steps = taskSequence.GetArrayItems("Steps"); // Array of SMS_TaskSequence_Steps.

        int index = 0;

        foreach (IResultObject ro in steps)
        {
            if (ro["Name"].StringValue == taskSequenceStepName)
            {
                if (index > 0) // Not the first step, so you can move it up.
                {
                    steps.Insert(index + 1, steps[index - 1]);
                    steps.Remove(steps[index - 1]);
                    taskSequence.SetArrayItems("Steps", steps);
                    break;
                }
            }
            index++;
        }
    }
    catch (SmsException e)
    {
        Console.WriteLine("Failed To enumerate task sequence items: " + e.Message);
        throw;
    }
}

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

Paramètre Type Description
taskSequence - Géré : IResultObject
- VBScript : SWbemObject
Une séquence de tâches ou un groupe de séquences de tâches valide
taskSequenceStepName

stepName
- Géré : String
- VBScript : String
Nom de l’étape de séquence de tâches à déplacer.

Compilation du code

Cet exemple C# requiert :

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, voir À propos des erreurs du Configuration Manager.

Sécurité de .NET Framework

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

Voir aussi

Vue d’ensemble des objetsComment ajouter un déploiement de système d’exploitation Action de séquence de tâchesComment 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 WMIVue d’ensemble de la séquence de tâches