Использование переменных последовательности задач в Configuration Manager

Относится к Configuration Manager (Current Branch)

Подсистема последовательности задач в функции развертывания ОС Configuration Manager использует множество переменных для управления своим поведением. Эти переменные используются в указанных ниже случаях.

  • Установка условий для шагов
  • Изменение поведения для определенных этапов
  • Использование в сценариях для более сложных действий

Справочник по всем доступным переменным последовательности задач см. в разделе Переменные последовательности задач.

Типы переменных

Существует несколько типов переменных:

Встроенные переменные

Встроенные переменные предоставляют сведения о среде, в которой выполняется последовательность задач. Их значения доступны на протяжении всей последовательности задач. Как правило, модуль последовательности задач инициализирует встроенные переменные перед выполнением каких-либо шагов.

Например, это переменная среды, указывающая путь, _SMSTSLogPath по которому компоненты Configuration Manager записывают файлы журнала. Любой шаг последовательности задач может получить доступ к этой переменной среды.

Последовательность задач оценивает некоторые переменные перед каждым шагом. Например, выводит _SMSTSCurrentActionName имя текущего шага.

Переменные действия

Переменные действия последовательности задач определяют параметры конфигурации, используемые для одного шага последовательности задач. По умолчанию этот шаг инициализирует свои параметры перед выполнением. Эти параметры доступны только во время выполнения соответствующего шага последовательности задач. Последовательность задач добавляет значение переменной действия в среду перед выполнением шага. Затем после выполнения шага это значение удаляется из среды.

Например, в последовательность задач необходимо добавить шаг " Выполнить командную строку ". Этот шаг включает свойство Start In . Последовательность задач сохраняет значение по умолчанию для этого свойства в WorkingDirectory качестве переменной. Последовательность задач инициализирует это значение до запуска этапа командной строки . Во время выполнения этого шага получите доступ к значению свойства Start In из WorkingDirectory значения. После завершения шага последовательность задач удаляет значение WorkingDirectory переменной из среды. Если последовательность задач включает еще один шаг команды "Выполнить командную строку ", она инициализирует новую WorkingDirectory переменную. В этот момент последовательность задач устанавливает переменную в начальное значение для текущего шага. Дополнительные сведения см. в разделе WorkingDirectory.

При выполнении шага указывается значение по умолчанию для переменной действия. Если вы зададите новое значение, оно будет доступно для нескольких шагов в последовательности задач. При переопределении значения по умолчанию новое значение остается в среде. Это новое значение переопределяет значение по умолчанию для других шагов последовательности задач. Например, в качестве первого шага последовательности задач добавляется шаг " Задать переменную последовательности задач ". На этом шаге WorkingDirectory переменная имеет значение C:\. На любом шаге команды "Выполнить командную строку " в последовательности задач используется новое значение начального каталога.

Некоторые шаги последовательности задач помечают определенные переменные действия как выходные данные. Через несколько шагов последовательности задач считывают эти выходные переменные.

Примечание.

Не все шаги последовательности задач имеют переменные действия. Например, хотя существуют переменные, связанные с действием включения BitLocker , нет переменных, связанных с действием Отключить BitLocker .

Пользовательские переменные

Это любые переменные, которые не создаются Configuration Manager. Инициализируйте собственные переменные для использования в качестве условий, в командных строках или сценариях.

Указывая имя для новой переменной последовательности задач, следуйте приведенным ниже рекомендациям.

  • Имя переменной последовательности задач может включать буквы, цифры, символ подчеркивания (_) и дефис (-).

  • Имена переменных последовательности задач имеют минимальную длину один символ и максимальную длину 256 символов.

  • Пользовательские переменные должны начинаться с буквы (A-Z или a-z).

  • Имена пользовательских переменных не могут начинаться со знака подчеркивания. Символ подчеркивания начинается только с переменными последовательности задач, доступных только для чтения.

  • Имена переменных последовательности задач не чувствительны к регистру. Например, OSDVAR и являются одной и osdvar той же переменной последовательности задач.

  • Имена переменных последовательности задач не могут начинаться или заканчиваться пробелом. В таких элементах также нельзя использовать встроенные пространства. Последовательность задач игнорирует любые пробелы в начале или конце имени переменной.

Ограничений на количество переменных последовательности задач, которые можно создать, нет. Однако количество переменных ограничено размером среды последовательности задач. Максимальный общий размер для среды последовательности задач составляет 8 КБ. Дополнительные сведения см. в разделе "Уменьшение размера политики последовательности задач".

Переменные только для чтения

Значения некоторых переменных, доступных только для чтения, изменить нельзя. Обычно имя начинается с символа подчеркивания (_). Последовательность задач использует их в своих операциях. В среде последовательности задач отображаются переменные, доступные только для чтения.

Эти переменные полезны в сценариях или командных строках. Например, запуск командной строки и конвейерная передача выходных данных в файл _SMSTSLogPath журнала вместе с другими файлами журнала.

Примечание.

Переменные последовательности задач только для чтения можно считывать по шагам в последовательности задач, но их нельзя задать. Например, используйте переменную "только для чтения" в командной строке на этапе "Выполнить командную строку ". Нельзя задать переменную только для чтения с помощью шага " Задать переменную последовательности задач ".

Переменные массива

Последовательность задач сохраняет некоторые переменные в виде массива. Каждый элемент в массиве представляет настройки одного объекта. Используйте эти переменные, если на устройстве есть несколько объектов для настройки. На следующих этапах последовательности задач используются переменные массива:

Задание переменных

Для пользовательских переменных или переменных, доступных не только для чтения, существует несколько способов инициализации и установки значения переменной:

Удалите переменную из среды, используя те же методы, что и для ее создания. Чтобы удалить переменную, задайте для нее значение в виде пустой строки.

Можно комбинировать методы, чтобы задать переменной последовательности задач разные значения для одной и той же последовательности. Например, можно задать значения по умолчанию с помощью редактора последовательности задач, а затем задать пользовательские значения с помощью сценария.

Если одна и та же переменная задана разными методами, в подсистеме последовательности задач используется следующий порядок:

  1. Сначала он оценивает переменные коллекции.

  2. Зависящие от устройства переменные переопределяют тот же набор переменных в коллекции.

  3. Переменные, заданные любым методом во время последовательности задач, имеют приоритет над переменными коллекции или устройства.

Общие ограничения значений переменных последовательности задач

  • Значения переменных последовательности задач не могут превышать 4000 символов.

  • Переменную последовательности задач, доступную только для чтения, изменить нельзя. Имена переменных, доступных только для чтения, начинаются с символа подчеркивания (_).

  • Значения переменных последовательности задач могут быть чувствительны к регистру в зависимости от использования значения. В большинстве случаев значения переменных последовательности задач не чувствительны к регистру. Переменная, содержащая пароль, чувствительна к регистру.

Задание переменной последовательности задач

Используйте этот шаг в последовательности задач, чтобы задать для одной переменной одно значение.

Дополнительные сведения см. в разделе Задание переменной последовательности задач.

Настройка динамических переменных

Используйте этот шаг в последовательности задач, чтобы задать одну или несколько переменных последовательности задач. На этом этапе определяются правила, определяющие используемые переменные и значения.

Дополнительные сведения см. в разделе Задание динамических переменных.

Запустите скрипт PowerShell

Используйте этот шаг в последовательности задач, чтобы использовать скрипт PowerShell для установки переменной последовательности задач.

Вы можете указать имя сценария из пакета или напрямую ввести сценарий PowerShell на этом шаге. Затем используйте свойство step для вывода в переменную последовательности задач , чтобы сохранить выходные данные сценария в настраиваемую переменную последовательности задач.

Дополнительные сведения об этом шаге см. в статье "Запуск скрипта PowerShell".

Примечание.

Вы также можете использовать скрипт PowerShell для установки одной или нескольких переменных с объектом TSEnvironment . Дополнительные сведения см. в статье Использование переменных в последовательности задач в пакете SDK для Configuration Manager.

Пример сценария с шагом "Запуск скрипта PowerShell"

В вашей среде есть пользователи в разных странах или регионах, поэтому вам нужно запросить язык ОС, чтобы установить его в качестве условия на шагах применения ОС для нескольких языков.

  1. Добавьте экземпляр сценария "Запуск PowerShell" в последовательность задач перед действиями "Применение ОС".

  2. Используйте параметр "Введите скрипт PowerShell ", чтобы указать следующую команду:

    (Get-Culture).TwoLetterISOLanguageName
    

    Дополнительные сведения о командлете см. в разделе Get-Culture. Для получения дополнительной информации о двухбуквенных названиях языков ISO см. Список кодов ISO 639-1.

  3. Для параметра Output to task sequence variable укажите CurrentOSLanguage.

    Снимок экрана: пример шага запуска скрипта PowerShell

  4. На шаге "Применение ОС " для образа на английском языке создайте следующее условие: Task Sequence Variable CurrentOSLanguage equals "en"

    Снимок экрана: пример условия на шаге

    Совет

    Дополнительные сведения о создании условия на шаге см. в разделе Как получить доступ к переменным - Условие шага.

  5. Сохраните и разверните последовательность задач.

При выполнении действия " Выполнить скрипт PowerShell " на устройстве с английской версией Windows команда возвращает значение en. Затем это значение сохраняется в пользовательской переменной. Когда шаг "Применение ОС " для образа на английском языке выполняется на том же устройстве, условие оценивается как ИСТИНА. Если у вас есть несколько экземпляров шага "Применение ОС" для разных языков, последовательность задач динамически выполняет шаг, соответствующий языку ОС.

Переменные коллекции и устройства

Можно определить пользовательские переменные последовательности задач для устройств и коллекций. Переменные, определенные для устройства, называются переменными последовательности задач для каждого устройства. Переменные, определенные для коллекции, называются переменными последовательности задач для коллекции. В случае конфликта переменные для устройства имеют приоритет над переменными для всей коллекции. Такое поведение означает, что переменные последовательности задач, назначенные определенному устройству, автоматически имеют более высокий приоритет, чем переменные, назначенные коллекции, содержащей устройство.

Например, устройство XYZ является членом коллекции ABC. Переменная MyVariable присваивается коллекции ABC со значением 1. Вы также назначаете MyVariable устройству XYZ со значением 2. Переменная, назначенная XYZ, имеет более высокий приоритет, чем переменная, назначенная коллекционной ABC. Когда последовательность задач с этой переменной выполняется в XYZ, MyVariable имеет значение 2.

Можно скрыть переменные для устройства и для коллекции, чтобы они не отображались на консоли Configuration Manager. При использовании параметра Не отображать это значение на консоли Configuration Manager значение переменной не отображается на консоли. Файл журнала последовательности задач (smsts.log) или отладчик последовательности задач также не отобразят значение переменной. Переменная по-прежнему может использоваться последовательностью задач при выполнении. Если вы больше не хотите, чтобы эти переменные были скрыты, сначала удалите их. Затем переопределите переменные, не выбирая параметр для их скрытия.

Предупреждение

Если включить переменные в командную строку шага "Выполнить командную строку ", в файле журнала последовательности задач будет отображаться полная командная строка, включая значения переменных. Чтобы предотвратить появление потенциально конфиденциальных данных в файле журнала, присвойте переменной последовательности задач OSDDoNotLogCommand значение TRUE.

Вы можете управлять переменными для каждого устройства на основном сайте или на сайте центра администрирования. Configuration Manager поддерживает не более 1000 назначенных переменных для устройства.

Важно!

При использовании переменных для коллекции в последовательностях задач учитывайте следующие варианты поведения:

  • Изменения в коллекциях всегда реплицируются по всей иерархии. Изменения, внесенные в переменные коллекции, применяются не только к членам текущего сайта, но и ко всем членам коллекции в иерархии.

  • При удалении коллекции этим действием также удаляются переменные последовательности задач, настроенные для коллекции.

Создание переменных последовательности задач для устройства

  1. В консоли Configuration Manager перейдите в рабочую область "Активы и соответствие" и выберите узел "Устройства".

  2. Выберите целевое устройство и нажмите "Свойства".

  3. В диалоговом окне Свойства переключитесь на вкладку Переменные .

  4. Для каждой переменной, которую вы хотите создать, выберите новый значок. Укажите Имя и Значение переменной последовательности задач. Если вы хотите скрыть переменную, чтобы она не была видна на консоли Configuration Manager, выберите параметр Не отображать это значение в консоли Configuration Manager.

  5. Добавив все переменные в свойства устройства, нажмите кнопку "ОК".

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

  1. В консоли Configuration Manager перейдите в рабочую область "Активы и соответствие" и выберите узел "Коллекции устройств". Выберите целевую коллекцию и нажмите "Свойства".

  2. В диалоговом окне "Свойства " перейдите на вкладку "Переменные-коллекционные ".

  3. Для каждой переменной, которую вы хотите создать, выберите новый значок. Укажите Имя и Значение переменной последовательности задач. Если вы хотите скрыть переменную, чтобы она не была видна на консоли Configuration Manager, выберите параметр Не отображать это значение в консоли Configuration Manager.

  4. При необходимости укажите приоритет для Configuration Manager, который будет использоваться при оценке переменных последовательности задач.

  5. Добавив все переменные в свойства коллекции, нажмите кнопку "ОК".

Объект TSEnvironment COM

Для работы с переменными из скрипта используйте объект TSEnvironment .

Дополнительные сведения см. в статье Использование переменных в последовательности задач в пакете SDK для Configuration Manager.

Предпусковая команда

Команда prestart — это сценарий или исполняемый файл, который запускается в Windows PE до того, как пользователь выберет последовательность задач. Команда предварительного запуска может запросить переменную или запросить у пользователя сведения, а затем сохранить их в среде. Используйте COM-объект TSEnvironment для чтения и записи переменных из команды prestart.

Дополнительные сведения см. в разделе Предстартовые команды для носителя последовательности задач.

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

После выбора последовательности задач в окне мастера последовательности задач на странице редактирования переменных последовательности задач появляется кнопка "Изменить ". Для редактирования переменных можно использовать сочетания клавиш с поддержкой специальных возможностей. Это изменение помогает в тех случаях, когда мышь недоступна.

Мастер последовательности задач — мультимедиа

Укажите переменные для последовательностей задач, выполняемых с носителя. При использовании носителя для развертывания ОС вы добавляете переменные последовательности задач и указываете их значения при создании носителя. Переменные и их значения хранятся на носителе.

Примечание.

Последовательности задач хранятся на отдельном носителе. Однако все другие типы мультимедиа, такие как предварительно подготовленные медиа, извлекают последовательность задач из точки управления.

При запуске последовательности задач с носителя можно добавить переменную на странице "Настройка " мастера.

Используйте переменные мультимедиа вместо переменных для коллекции или компьютера. Если последовательность задач выполняется с носителя, переменные для компьютера и коллекции не применяются и не используются.

Совет

Последовательность задач записывает идентификатор пакета и предпусковую командную строку в файл CreateTSMedia.log на компьютере, на котором запущена консоль Configuration Manager. Этот файл журнала содержит значения для всех переменных последовательности задач. Просмотрите этот файл журнала, чтобы проверить значение переменных последовательности задач.

Дополнительные сведения см. в разделе Создание носителя последовательности задач.

Доступ к переменным

Указав переменную и ее значение с помощью одного из методов из предыдущего раздела, используйте его в последовательностях задач. Например, можно получить доступ к значениям по умолчанию для встроенных переменных последовательности задач или сделать шаг зависимым от значения переменной.

Для доступа к значениям переменных в среде последовательности задач используйте следующие методы:

Использование за один шаг

Укажите значение переменной для параметра на шаге последовательности задач. В редакторе последовательности задач измените шаг и укажите имя переменной в качестве значения поля. Имя переменной должно быть заключено в знаки процента (%).

Например, используйте имя переменной как часть поля "Командная строка " шага " Выполнить командную строку ". Приведенная ниже командная строка записывает имя компьютера в текстовый файл.

cmd.exe /c echo %_SMSTSMachineName% > C:\File.txt

Условие шага

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

Чтобы добавить условие, оценивающее значение переменной, выполните следующие действия.

  1. В редакторе последовательностей задач выберите шаг или группу, в которую требуется добавить условие.

  2. Переключение на вкладку "Параметры " для шага или группы. Нажмите кнопку Add Condition (Добавить условие) и выберите переменную последовательности задач.

  3. В диалоговом окне "Переменная последовательности задач " укажите следующие параметры:

    • Variable: имя переменной. Например, _SMSTSInWinPE.

    • Условие: условие для оценки значения переменной. Доступны следующие условия:

      • Exists
      • Не существует
      • Равно
      • Не равно
      • Больше
      • Больше или равно
      • Меньше
      • Меньше или равно
      • Like (поддерживает подстановочные знаки для * и ?)
      • Not like (версия 2103 или более поздняя)
    • Значение: значение переменной для проверки. Например, false.

Три примера выше образуют общее условие для проверки того, выполняется ли последовательность задач из загрузочного образа в Windows PE:

Переменная последовательности задач_SMSTSInWinPE equals "false"

См. это условие в группе Запись Files и параметры шаблона последовательности задач по умолчанию для установки существующего образа операционной системы.

Дополнительные сведения об условиях см. в разделе Редактор последовательности задач - Условия.

Пользовательский сценарий

Чтение и запись переменных с помощью COM-объекта Microsoft.SMS.TSEnvironment во время выполнения последовательности задач.

В следующем примере Windows PowerShell выполняется запрос к переменной _SMSTSLogPath, чтобы получить текущее расположение журнала. Скрипт также устанавливает пользовательскую переменную.

# Create an object to access the task sequence environment
$tsenv = New-Object -ComObject Microsoft.SMS.TSEnvironment

# Query the environment to get an existing variable
# Set a variable for the task sequence log path
$LogPath = $tsenv.Value("_SMSTSLogPath")

# Or, convert all of the variables currently in the environment to PowerShell variables
$tsenv.GetVariables() | % { Set-Variable -Name "$_" -Value "$($tsenv.Value($_))" }

# Write a message to a log file
Write-Output "Hello world!" | Out-File -FilePath "$LogPath\mylog.log" -Encoding "Default" -Append

# Set a custom variable "startTime" to the current time
$tsenv.Value("startTime") = (Get-Date -Format HH:mm:ss) + ".000+000"

Файл ответов по установке Windows

В предоставленный вами файл ответов по установке Windows можно внедрить переменные последовательности задач. Используйте форму %varname%, где varname — имя переменной. На шагах "Настройка окон и ConfigMgr" заменяется строка имени переменной на фактическое значение переменной. Эти встроенные переменные последовательности задач нельзя использовать в числовых полях в файле ответов unattend.xml.

Дополнительные сведения см. в разделе Настройка Windows и ConfigMgr.

См. также