Использование переменных последовательности задач в Configuration Manager
Относится к Configuration Manager (Current Branch)
Подсистема последовательности задач в компоненте развертывания ОС Configuration Manager использует множество переменных для управления своим поведением. Используйте эти переменные, чтобы:
- Настройка условий для шагов
- Изменение поведения для определенных шагов
- Использование в скриптах для более сложных действий
Сведения обо всех доступных переменных последовательности задач см. в разделе Переменные последовательности задач.
Типы переменных
Существует несколько типов переменных:
Встроенные переменные
Встроенные переменные предоставляют сведения о среде, в которой выполняется последовательность задач. Их значения доступны во всей последовательности задач. Как правило, подсистема последовательности задач инициализирует встроенные переменные перед выполнением каких-либо шагов.
Например, — это переменная среды, _SMSTSLogPath
указывающая путь, по которому компоненты Configuration Manager записывают файлы журналов. Любой шаг последовательности задач может получить доступ к этой переменной среды.
Последовательность задач оценивает некоторые переменные перед каждым шагом. Например, _SMSTSCurrentActionName
выводит имя текущего шага.
Переменные действия
Переменные действия последовательности задач указывают параметры конфигурации, которые используются на одном шаге последовательности задач. По умолчанию шаг инициализирует свои параметры перед выполнением. Эти параметры доступны только при выполнении соответствующего шага последовательности задач. Последовательность задач добавляет значение переменной действия в среду перед выполнением шага. Затем он удаляет значение из среды после выполнения шага.
Например, вы добавляете шаг Выполнить командную строку в последовательность задач. Этот шаг включает свойство Start In . Последовательность задач сохраняет значение по умолчанию для этого свойства в качестве переменной WorkingDirectory
. Последовательность задач инициализирует это значение перед выполнением шага Выполнить командную строку . Во время выполнения этого шага получите доступ к значению WorkingDirectory
свойства Start In из значения . После завершения шага последовательность задач удаляет значение переменной WorkingDirectory
из среды. Если последовательность задач включает другой шаг выполнить командную строку , она инициализирует новую WorkingDirectory
переменную. В это время последовательность задач задает для переменной начальное значение для текущего шага. Дополнительные сведения см. в разделе WorkingDirectory.
Значение по умолчанию для переменной действия присутствует при выполнении шага. Если задать новое значение, оно будет доступно для нескольких шагов в последовательности задач. Если переопределить значение по умолчанию, новое значение останется в среде. Это новое значение переопределяет значение по умолчанию для других шагов в последовательности задач. Например, вы добавляете шаг Set Task Sequence Variable (Задать переменную последовательности задач ) в качестве первого шага последовательности задач. На этом шаге для переменной WorkingDirectory
устанавливается значение C:\
. При выполнении шага командной строки в последовательности задач используется новое начальное значение каталога.
Некоторые шаги последовательности задач помечают определенные переменные действия как выходные данные. Шаги далее в последовательности задач считывают эти выходные переменные.
Примечание.
Не все шаги последовательности задач имеют переменные действий. Например, несмотря на наличие переменных, связанных с действием Включить BitLocker , с действием Отключить BitLocker нет переменных.
Пользовательские переменные
Эти переменные не создаются Configuration Manager. Инициализация собственных переменных для использования в качестве условий, в командных строках или скриптах.
При указании имени для новой переменной последовательности задач следуйте приведенным ниже рекомендациям.
Имя переменной последовательности задач может включать буквы, цифры, символ подчеркивания (
_
) и дефис (-
).Имена переменных последовательности задач имеют минимальную длину одного символа и максимальную длину 256 символов.
Определяемые пользователем переменные должны начинаться с буквы (
A-Z
илиa-z
).Имена определяемых пользователем переменных не могут начинаться с символа подчеркивания. Только переменные последовательности задач, доступные только для чтения, предшествуют символу подчеркивания.
В именах переменных последовательности задач регистр не учитывается. Например,
OSDVAR
и являются одной иosdvar
той же переменной последовательности задач.Имена переменных последовательности задач не могут начинаться или заканчиваться пробелом. Они также не могут иметь встроенные пробелы. Последовательность задач игнорирует пробелы в начале или конце имени переменной.
Количество переменных последовательности задач, которые можно создать, не ограничено. Однако количество переменных ограничено размером среды последовательности задач. Общий размер среды последовательности задач составляет 8 КБ. Дополнительные сведения см. в статье Уменьшение размера политики последовательности задач.
Переменные, доступные только для чтения
Нельзя изменить значение некоторых переменных, доступных только для чтения. Обычно имя начинается с символа подчеркивания (_
). Последовательность задач использует их для своих операций. Переменные, доступные только для чтения, видны в среде последовательности задач.
Эти переменные полезны в сценариях или командных строках. Например, запуск командной строки и передача выходных данных в файл журнала с _SMSTSLogPath
другими файлами журнала.
Примечание.
Переменные последовательности задач, доступные только для чтения, можно считывать по шагам в последовательности задач, но их нельзя задать. Например, используйте переменную только для чтения в командной строке для шага выполнить командную строку . Нельзя задать переменную, доступную только для чтения, с помощью шага Задание переменной последовательности задач .
Переменные массива
Последовательность задач сохраняет некоторые переменные в виде массива. Каждый элемент в массиве представляет параметры для одного объекта. Используйте эти переменные, если устройство имеет несколько объектов для настройки. В следующих шагах последовательности задач используются переменные массива:
Настройка переменных
Для пользовательских переменных или переменных, которые не доступны только для чтения, существует несколько методов для инициализации и задания значения переменной:
- Задание шага переменной последовательности задач
- Шаг "Задание динамических переменных "
- Шаг запуска скрипта PowerShell
- Переменные коллекции и устройства
- COM-объект TSEnvironment
- Команда перед запуском
- Мастер последовательности задач
- Мастер носителя последовательности задач
Удалите переменную из среды, используя те же методы, что и создание переменной. Чтобы удалить переменную, задайте для нее значение пустой строки.
Можно объединить методы, чтобы задать для переменной последовательности задач разные значения для одной последовательности. Например, задайте значения по умолчанию с помощью редактора последовательности задач, а затем задайте пользовательские значения с помощью скрипта.
Если задать одну и ту же переменную разными методами, подсистема последовательности задач использует следующий порядок:
Сначала вычисляется переменные коллекции.
Переменные, относящиеся к устройству, переопределяют один и тот же набор переменных в коллекции.
Переменные, заданные любым методом во время последовательности задач, имеют приоритет над переменными коллекции или устройства.
Общие ограничения для значений переменных последовательности задач
Значения переменных последовательности задач не могут превышать 4000 символов.
Нельзя изменить переменную последовательности задач, доступную только для чтения. Переменные, доступные только для чтения, имеют имена, начинающиеся с символа подчеркивания (
_
).Значения переменных последовательности задач могут учитывать регистр в зависимости от использования значения. В большинстве случаев значения переменных последовательности задач не учитывает регистр. Переменная, содержащая пароль, учитывает регистр.
Задание переменной последовательности задач
Используйте этот шаг в последовательности задач, чтобы задать для одной переменной одно значение.
Дополнительные сведения см. в разделе Задание переменной последовательности задач.
Задание динамических переменных
Используйте этот шаг в последовательности задач, чтобы задать одну или несколько переменных последовательности задач. На этом шаге вы определите правила, чтобы определить, какие переменные и значения следует использовать.
Дополнительные сведения см. в разделе Настройка динамических переменных.
Запуск скрипта PowerShell
Этот шаг в последовательности задач используется для задания переменной последовательности задач с помощью скрипта PowerShell.
Вы можете указать имя скрипта из пакета или напрямую ввести скрипт PowerShell на шаге. Затем используйте свойство step для вывода в переменную последовательности задач , чтобы сохранить выходные данные скрипта в настраиваемую переменную последовательности задач.
Дополнительные сведения об этом шаге см. в статье Запуск скрипта PowerShell.
Примечание.
Вы также можете использовать сценарий PowerShell для задания одной или нескольких переменных с помощью объекта TSEnvironment . Дополнительные сведения см . в разделе Использование переменных в выполняемой последовательности задач в пакете SDK Для Configuration Manager.
Пример сценария с этапом запуска скрипта PowerShell
В вашей среде есть пользователи в нескольких странах или регионах, поэтому вы хотите запросить язык ОС, чтобы задать в качестве условия для нескольких языковых шагов применить ОС .
Добавьте экземпляр запуска скрипта PowerShell в последовательность задач перед этапами Применения ОС .
Используйте параметр Введите сценарий PowerShell , чтобы указать следующую команду:
(Get-Culture).TwoLetterISOLanguageName
Дополнительные сведения о командлете см. в разделе Get-Culture. Дополнительные сведения о двухбуквенном языке ISO см. в разделе Список кодов ISO 639-1.
Для параметра Вывод в переменную последовательности задач укажите
CurrentOSLanguage
.На шаге Применить ОС для образа английского языка создайте следующее условие:
Task Sequence Variable CurrentOSLanguage equals "en"
Совет
Дополнительные сведения о создании условия на шаге см. в разделе Как получить доступ к переменным — условие шага.
Сохраните и разверните последовательность задач.
Когда шаг Запуск сценария PowerShell выполняется на устройстве с версией Windows на английском языке, команда возвращает значение en
. Затем оно сохраняет это значение в настраиваемую переменную. Когда шаг Применить ОС для образа английского языка запускается на том же устройстве, условие принимает значение true. При наличии нескольких экземпляров шага Применить ОС для разных языков последовательность задач динамически выполняет шаг, соответствующий языку ОС.
Переменные коллекции и устройства
Можно определить настраиваемые переменные последовательности задач для устройств и коллекций. Переменные, определяемые для устройства, называются переменными последовательности задач для каждого устройства. Переменные, определенные для коллекции, называются переменными последовательности задач для каждой коллекции. В случае конфликта переменные для каждого устройства имеют приоритет над переменными коллекции. Это означает, что переменные последовательности задач, назначенные конкретному устройству, автоматически имеют более высокий приоритет, чем переменные, назначенные коллекции, содержащей устройство.
Например, устройство XYZ является членом коллекции ABC. MyVariable назначается коллекции ABC со значением 1. Вы также назначите MyVariable устройству XYZ со значением 2. Переменная, назначенная XYZ, имеет более высокий приоритет, чем переменная, назначенная коллекции ABC. Когда последовательность задач с этой переменной выполняется в XYZ, MyVariable имеет значение 2.
Переменные для каждого устройства и коллекции можно скрыть, чтобы они не отображались в консоли Configuration Manager. При использовании параметра Не отображать это значение в консоли Configuration Manager значение переменной не отображается в консоли. Файл журнала последовательности задач (smsts.log) или отладчик последовательности задач также не будут отображать значение переменной. Переменная по-прежнему может использоваться последовательностью задач при выполнении. Если вы больше не хотите, чтобы эти переменные были скрыты, сначала удалите их. Затем переопределите переменные, не выбирая параметр для их скрытия.
Предупреждение
Если включить переменные в командную строку шага запуска командной строки , в файле журнала последовательности задач отображается полная командная строка, включая значения переменных. Чтобы предотвратить появление потенциально конфиденциальных данных в файле журнала, задайте для переменной последовательности задач OSDDoNotLogCommand значение TRUE
.
Вы можете управлять переменными для каждого устройства на первичном сайте или на сайте центра администрирования. Configuration Manager поддерживает не более 1000 назначенных переменных для устройства.
Важно!
При использовании переменных для каждой коллекции для последовательностей задач следует учитывать следующие варианты поведения:
Изменения в коллекциях всегда реплицируются по всей иерархии. Любые изменения, внесенные в переменные коллекции, применяются не только к членам текущего сайта, но и ко всем членам коллекции в иерархии.
При удалении коллекции это действие также удаляет переменные последовательности задач, настроенные для коллекции.
Создание переменных последовательности задач для устройства
В консоли Configuration Manager перейдите в рабочую область Активы и соответствие и выберите узел Устройства .
Выберите целевое устройство и выберите Свойства.
В диалоговом окне Свойства перейдите на вкладку Переменные .
Для каждой переменной, которую требуется создать, щелкните значок Создать . Укажите имя и значение переменной последовательности задач. Если вы хотите скрыть переменную, чтобы она не отображались в консоли Configuration Manager, выберите параметр Не отображать это значение в консоли Configuration Manager.
Добавив все переменные в свойства устройства, нажмите кнопку ОК.
Создание переменных последовательности задач для коллекции
В консоли Configuration Manager перейдите в рабочую область Активы и соответствие и выберите узел Коллекции устройств . Выберите целевую коллекцию и выберите Свойства.
В диалоговом окне Свойства перейдите на вкладку Переменные коллекции .
Для каждой переменной, которую требуется создать, щелкните значок Создать . Укажите имя и значение переменной последовательности задач. Если вы хотите скрыть переменную, чтобы она не отображались в консоли Configuration Manager, выберите параметр Не отображать это значение в консоли Configuration Manager.
При необходимости укажите приоритет для Configuration Manager, который будет использоваться при оценке переменных последовательности задач.
После добавления всех переменных в свойства коллекции нажмите кнопку ОК.
COM-объект TSEnvironment
Для работы с переменными из скрипта используйте объект TSEnvironment .
Дополнительные сведения см . в разделе Использование переменных в выполняемой последовательности задач в пакете SDK Для Configuration Manager.
Команда перед запуском
Команда перед запуском — это скрипт или исполняемый файл, который выполняется в Среде предустановки Windows, прежде чем пользователь выберет последовательность задач. Команда перед запуском может запросить переменную или запросить у пользователя сведения, а затем сохранить ее в среде. Используйте COM-объект TSEnvironment для чтения и записи переменных из команды перед запуском.
Дополнительные сведения см. в разделе Команды перед запуском для носителя последовательности задач.
Мастер последовательности задач
После выбора последовательности задач в окне мастера последовательности задач на странице изменения переменных последовательности задач появится кнопка Изменить . Для изменения переменных можно использовать специальные сочетания клавиш. Это изменение помогает в тех случаях, когда мышь недоступна.
Мастер носителя последовательности задач
Укажите переменные для последовательностей задач, выполняемых с носителя. При использовании носителя для развертывания ОС необходимо добавить переменные последовательности задач и указать их значения при создании носителя. Переменные и их значения хранятся на носителе.
Примечание.
Последовательности задач хранятся на автономном носителе. Однако все другие типы носителей, например предварительно подготовленный носитель, извлекают последовательность задач из точки управления.
При запуске последовательности задач с носителя можно добавить переменную на странице Настройка мастера.
Используйте переменные мультимедиа вместо переменных для каждой коллекции или каждого компьютера. Если последовательность задач выполняется с носителя, переменные для каждого компьютера и коллекции не применяются и не используются.
Совет
Последовательность задач записывает идентификатор пакета и командную строку перед запуском в файл CreateTSMedia.log на компьютере, на котором запущена консоль Configuration Manager. Этот файл журнала содержит значение для любых переменных последовательности задач. Просмотрите этот файл журнала, чтобы проверить значение переменных последовательности задач.
Дополнительные сведения см. в разделе Создание носителя последовательности задач.
Доступ к переменным
После указания переменной и ее значения с помощью одного из методов из предыдущего раздела используйте ее в последовательностях задач. Например, можно получить доступ к значениям по умолчанию для встроенных переменных последовательности задач или сделать шаг условным значением переменной.
Используйте следующие методы для доступа к переменным значениям в среде последовательности задач:
Использование в шаге
Укажите значение переменной для параметра на шаге последовательности задач. В редакторе последовательности задач измените шаг и укажите имя переменной в качестве значения поля. Заключите имя переменной в знаки процента (%
).
Например, используйте имя переменной в поле Командной строки шага Выполнить командную строку . Следующая командная строка записывает имя компьютера в текстовый файл.
cmd.exe /c echo %_SMSTSMachineName% > C:\File.txt
Условие шага
Используйте встроенные или настраиваемые переменные последовательности задач как часть условия на шаге или группе. Последовательность задач вычисляет значение переменной перед выполнением шага или группы.
Чтобы добавить условие, которое вычисляет значение переменной, сделайте следующее:
В редакторе последовательности задач выберите шаг или группу, в которую нужно добавить условие.
Перейдите на вкладку Параметры для шага или группы. Щелкните Добавить условие и выберите Переменная последовательности задач.
В диалоговом окне Переменная последовательности задач укажите следующие параметры:
Переменная: имя переменной. Например,
_SMSTSInWinPE
.Условие: условие для вычисления значения переменной. Доступны следующие условия:
- Exists
- Не существует
- Равно
- Не равно
- Больше
- Больше или равно
- Меньше
- Меньше или равно
- Нравится (поддерживает подстановочные знаки
*
и?
) - Не нравится (версия 2103 или более поздняя)
Значение: значение проверяемой переменной. Например,
false
.
В трех приведенных выше примерах формируется общее условие для проверки того, выполняется ли последовательность задач из загрузочного образа в Среде предустановки Windows:
Переменная последовательности задач
_SMSTSInWinPE equals "false"
См. это условие в группе Запись файлов и параметров шаблона последовательности задач по умолчанию, чтобы установить существующий образ ОС.
Дополнительные сведения об условиях см. в разделе Редактор последовательности задач — условия.
Настраиваемый скрипт
Чтение и запись переменных с помощью 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 — это имя переменной. Шаг установки Windows и ConfigMgr заменяет строку имени переменной для фактического значения переменной. Эти внедренные переменные последовательности задач нельзя использовать в числовых полях в файле ответов unattend.xml.
Дополнительные сведения см. в разделе Настройка Windows и ConfigMgr.