Поделиться через


Изменение порядка последовательности задач развертывания операционной системы

В Configuration Manager можно изменить порядок шагов (действие или группа) в последовательности задач или группе, переупорядочение последовательности шагов в свойстве StepsSMS_TaskSequence_Step массиве.

Изменение порядка последовательности задач

  1. Настройте подключение к поставщику SMS. Дополнительные сведения см. в статье Основы поставщика SMS.

  2. Получите допустимую последовательность задач (SMS_TaskSequence) или группу последовательности задач (SMS_TaskSequence_Group). Дополнительные сведения см. в разделе Чтение последовательности задач из пакета последовательности задач.

  3. В свойстве массива Steps переместите SMS_TaskSequence_Step в новое расположение.

  4. Обновите последовательность задач или группу.

Пример

В следующем примере показано, как переместить шаг вверх или вниз в последовательности задач или группе.

Сведения о вызове примера кода см. в разделе Вызов фрагментов кода 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;  
    }  
}  

Метод примера имеет следующие параметры:

Параметр Тип Описание
taskSequence -Управляемых: IResultObject
— VBScript: SWbemObject
Допустимая последовательность задач или группа последовательности задач
taskSequenceStepName

stepName
-Управляемых: String
-Vbscript: String
Имя шага последовательности задач для перемещения.

Компиляция программы

Для этого примера на C# требуется следующее:

Пространства имен

System;

System.Collections.Generic;

System.Text

Майкрософт. ConfigurationManagement.ManagementProvider

Майкрософт. ConfigurationManagement.ManagementProvider.WqlQueryEngine

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Надежное программирование

Дополнительные сведения об обработке ошибок см. в разделе Сведения об ошибках Configuration Manager.

Безопасность .NET Framework

Дополнительные сведения о защите приложений Configuration Manager см. в статье Configuration Manager администрирование на основе ролей.

См. также

Общие сведения об объектах. Добавление действия последовательности задач развертывания операционной системы
Подключение к поставщику SMS в Configuration Manager с помощью управляемого кода
Подключение к поставщику SMS в Configuration Manager с помощью WMI
Обзор последовательности задач