Cómo reordenar una secuencia de tareas de implementación de sistema operativo

En Configuration Manager, puede reordenar los pasos (una acción o un grupo) en una secuencia de tareas o un grupo reorganizando la secuencia de pasos en la propiedad PasosSMS_TaskSequence_Step matriz.

Para cambiar el orden de una secuencia de tareas

  1. Configure una conexión al proveedor de SMS. Para obtener más información, consulte Aspectos básicos del proveedor de SMS.

  2. Obtenga una secuencia de tareas (SMS_TaskSequence) o un grupo de secuencias de tareas (SMS_TaskSequence_Group) válidos. Para obtener más información, vea Cómo leer una secuencia de tareas de un paquete de secuencia de tareas.

  3. Dentro de la propiedad de Steps matriz, mueva el SMS_TaskSequence_Step a su nueva ubicación.

  4. Actualice la secuencia o el grupo de tareas.

Ejemplo

En el ejemplo siguiente se muestra cómo mover un paso hacia arriba o hacia abajo dentro de una secuencia de tareas o grupo.

Para obtener información sobre cómo llamar al código de ejemplo, consulte Llamar a fragmentos de código 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;
    }
}

El método de ejemplo tiene los siguientes parámetros:

Parámetro Tipo Descripción
taskSequence - Administrado: IResultObject
- VBScript: SWbemObject
Una secuencia de tareas o grupo de secuencias de tareas válida
taskSequenceStepName

stepName
- Administrado: String
- VBScript: String
Nombre del paso de la secuencia de tareas que se va a mover.

Compilar el código

Este ejemplo de C# requiere:

Espacios de nombres

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Ensamblado

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Programación sólida

Para obtener más información acerca del control de errores, consulte Acerca de los errores de Configuration Manager.

Seguridad de .NET Framework

Para obtener más información acerca de cómo proteger las aplicaciones de Configuration Manager, consulte Administración basada en roles de Configuration Manager.

Consulta también

Información general sobre objetosCómo agregar una acción de secuencia de tareas de implementación del sistema operativoCómo conectarse a un proveedor de SMS en Configuration Manager mediante código administradoCómo conectarse a un proveedor de SMS en Configuration Manager mediante WMI Introducción a la secuencia de tareas