Come riordinare una sequenza di attività di distribuzione del sistema operativo

In Configuration Manager è possibile riordinare i passaggi (un'azione o un gruppo) in una sequenza di attività o in un gruppo riorganizzando la sequenza di passaggi nella proprietà Passaggi SMS_TaskSequence_Step matrice.

Per riordinare una sequenza di attività

  1. Configurare una connessione al provider SMS. Per altre informazioni, vedere Nozioni fondamentali sul provider SMS.

  2. Ottenere una sequenza di attività (SMS_TaskSequence) o un gruppo di sequenze di attività (SMS_TaskSequence_Group) valido. Per altre informazioni, vedere Come leggere una sequenza di attività da un pacchetto di sequenze di attività.

  3. All'interno della Steps proprietà array, spostare il SMS_TaskSequence_Step nella nuova posizione.

  4. Aggiornare la sequenza di attività o il gruppo.

Esempio

L'esempio seguente mostra come spostare un passaggio in alto o in basso all'interno di una sequenza di attività o di un gruppo.

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice di 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;
    }
}

Il metodo di esempio include i parametri seguenti:

Parametro Tipo Descrizione
taskSequence - Gestito: IResultObject
- VBScript: SWbemObject
Una sequenza di attività o un gruppo di sequenze di attività valido
taskSequenceStepName

stepName
- Gestito: String
- VBScript: String
Nome del passaggio della sequenza di attività da spostare.

Compilazione del codice

Questo esempio di C# richiede:

Spazi dei nomi

Sistema

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagementManagementProvider

Microsoft.ConfigurationManagementManagementProvider.WqlQueryEngine

Assembly

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

Programmazione efficiente

Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.

Sicurezza di .NET Framework

Per altre informazioni sulla protezione delle applicazioni di Configuration Manager, vedere Amministrazione basata sui ruoli di Configuration Manager.

Vedere anche

Panoramica degli oggettiCome aggiungere un sistema operativo Azione della sequenza di attivitàCome connettersi a un provider SMS in Configuration Manager tramite codice gestitoCome connettersi a un provider SMS in Configuration Manager tramite WMIPanoramica della sequenza di attività