Compartilhar via


Como Reordenar uma Sequência de Tarefas de Implementação do Sistema Operativo

No Configuration Manager, pode reordenar os passos (uma ação ou um grupo) numa sequência de tarefas ou num grupo ao reorganizar a sequência de passos na propriedade PassosSMS_TaskSequence_Step matriz.

Para reordenar uma sequência de tarefas

  1. Configure uma ligação ao Fornecedor de SMS. Para obter mais informações, veja Noções básicas do Fornecedor de SMS.

  2. Obtenha uma sequência de tarefas (SMS_TaskSequence) válida ou um grupo de sequência de tarefas (SMS_TaskSequence_Group). Para obter mais informações, veja How to Read a Task Sequence From a Task Sequence Package (Como Ler uma Sequência de Tarefas a Partir de um Pacote de Sequência de Tarefas).

  3. Steps Na propriedade matriz, mova o SMS_TaskSequence_Step para a nova localização.

  4. Atualize a sequência de tarefas ou o grupo.

Exemplo

O exemplo seguinte mostra como mover um passo para cima ou para baixo numa sequência de tarefas ou grupo.

Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos de Código.

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

O método de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
taskSequence - Gerido: IResultObject
- VBScript: SWbemObject
Uma sequência de tarefas ou um grupo de sequência de tarefas válido
taskSequenceStepName

stepName
- Gerido: String
- VBScript: String
O nome do passo de sequência de tarefas a mover.

Compilando o código

Este exemplo de C# requer:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Programação robusta

Para obter mais informações sobre o processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).

Segurança do .NET Framework

Para obter mais informações sobre como proteger aplicações Configuration Manager, veja Configuration Manager administração baseada em funções.

Confira também

Descrição geral de ObjetosComo Adicionar uma Ação de Sequência de Tarefas de Implementação do Sistema OperativoComo Ligar a um Fornecedor de SMS no Configuration Manager Utilizando Código GeridoComo Ligar a um Fornecedor de SMS no Configuration Manager utilizando a descrição geral da sequência de tarefas WMI