Uso de variables de secuencia de tareas en Configuration Manager
Se aplica a: Configuration Manager (rama actual)
El motor de secuencia de tareas de la característica de implementación del sistema operativo de Configuration Manager usa muchas variables para controlar sus comportamientos. Use estas variables para:
- Establecer condiciones en los pasos
- Cambiar comportamientos para pasos específicos
- Uso en scripts para acciones más complejas
Para obtener una referencia de todas las variables de secuencia de tareas disponibles, consulte Variables de secuencia de tareas.
Tipos de variables
Hay varios tipos de variables:
Variables integradas
Las variables integradas proporcionan información sobre el entorno donde se ejecuta la secuencia de tareas. Sus valores están disponibles en toda la secuencia de tareas. Normalmente, el motor de secuencia de tareas inicializa las variables integradas antes de ejecutar cualquier paso.
Por ejemplo, _SMSTSLogPath
es una variable de entorno que especifica la ruta de acceso a la que los componentes de Configuration Manager escriben archivos de registro. Cualquier paso de secuencia de tareas puede acceder a esta variable de entorno.
La secuencia de tareas evalúa algunas variables antes de cada paso. Por ejemplo, _SMSTSCurrentActionName
muestra el nombre del paso actual.
Variables de acción
Las variables de acción de secuencia de tareas especifican los valores de configuración que usa un solo paso de secuencia de tareas. De forma predeterminada, el paso inicializa su configuración antes de ejecutarse. Esta configuración solo está disponible mientras se ejecuta el paso de secuencia de tareas asociado. La secuencia de tareas agrega el valor de la variable de acción al entorno antes de ejecutar el paso. A continuación, quita el valor del entorno después de que se ejecute el paso.
Por ejemplo, agregue el paso Ejecutar línea de comandos a una secuencia de tareas. Este paso incluye una propiedad Start In . La secuencia de tareas almacena un valor predeterminado para esta propiedad como variable WorkingDirectory
. La secuencia de tareas inicializa este valor antes de ejecutar el paso Ejecutar línea de comandos . Mientras se ejecuta este paso, acceda al valor de la propiedad Start In desde el WorkingDirectory
valor . Una vez completado el paso, la secuencia de tareas quita el valor de la WorkingDirectory
variable del entorno. Si la secuencia de tareas incluye otro paso ejecutar línea de comandos , inicializa una nueva WorkingDirectory
variable. En ese momento, la secuencia de tareas establece la variable en el valor inicial del paso actual. Para obtener más información, vea WorkingDirectory.
El valor predeterminado de una variable de acción está presente cuando se ejecuta el paso. Si establece un nuevo valor, estará disponible para varios pasos de la secuencia de tareas. Si invalida un valor predeterminado, el nuevo valor permanece en el entorno. Este nuevo valor invalida el valor predeterminado para otros pasos de la secuencia de tareas. Por ejemplo, agregue un paso Establecer variable de secuencia de tareas como primer paso de la secuencia de tareas. Este paso establece la WorkingDirectory
variable en C:\
. Cualquier paso ejecutar línea de comandos en la secuencia de tareas usa el nuevo valor de directorio inicial.
Algunos pasos de secuencia de tareas marcan ciertas variables de acción como salida. Los pasos posteriores de la secuencia de tareas leen estas variables de salida.
Nota:
No todos los pasos de secuencia de tareas tienen variables de acción. Por ejemplo, aunque hay variables asociadas a la acción Habilitar BitLocker , no hay ninguna variable asociada a la acción Deshabilitar BitLocker .
Variables personalizadas
Estas variables son las que Configuration Manager no crea. Inicialice sus propias variables para usarlas como condiciones, en líneas de comandos o en scripts.
Cuando especifique un nombre para una nueva variable de secuencia de tareas, siga estas instrucciones:
El nombre de la variable de secuencia de tareas puede incluir letras, números, el carácter de subrayado (
_
) y un guion (-
).Los nombres de variables de secuencia de tareas tienen una longitud mínima de un carácter y una longitud máxima de 256 caracteres.
Las variables definidas por el usuario deben comenzar con una letra (
A-Z
oa-z
).Los nombres de variable definidos por el usuario no pueden comenzar con el carácter de subrayado. Solo las variables de secuencia de tareas de solo lectura van precedidas por el carácter de subrayado.
Los nombres de variables de secuencia de tareas no distinguen mayúsculas de minúsculas. Por ejemplo,
OSDVAR
yosdvar
son la misma variable de secuencia de tareas.Los nombres de variables de secuencia de tareas no pueden comenzar ni terminar con un espacio. Tampoco pueden tener espacios incrustados. La secuencia de tareas omite los espacios al principio o al final de un nombre de variable.
No hay ningún límite establecido para cuántas variables de secuencia de tareas puede crear. Sin embargo, el número de variables está limitado por el tamaño del entorno de secuencia de tareas. El límite de tamaño total para el entorno de secuencia de tareas es de 8 KB. Para obtener más información, vea Reducir el tamaño de la directiva de secuencia de tareas.
Variables de solo lectura
No se puede cambiar el valor de algunas variables, que son de solo lectura. Normalmente, el nombre comienza con un carácter de subrayado (_
). La secuencia de tareas los usa para sus operaciones. Las variables de solo lectura están visibles en el entorno de secuencia de tareas.
Estas variables son útiles en scripts o líneas de comandos. Por ejemplo, la ejecución de una línea de comandos y la canalización de la salida a un archivo de registro en _SMSTSLogPath
con los demás archivos de registro.
Nota:
Las variables de secuencia de tareas de solo lectura se pueden leer mediante los pasos de una secuencia de tareas, pero no se pueden establecer. Por ejemplo, use una variable de solo lectura como parte de la línea de comandos para un paso Ejecutar línea de comandos . No se puede establecer una variable de solo lectura mediante el paso Establecer variable de secuencia de tareas .
Variables de matriz
La secuencia de tareas almacena algunas variables como una matriz. Cada elemento de la matriz representa la configuración de un solo objeto. Use estas variables cuando un dispositivo tenga más de un objeto para configurar. Los siguientes pasos de secuencia de tareas usan variables de matriz:
Cómo establecer variables
Para variables personalizadas o variables que no son de solo lectura, hay varios métodos para inicializar y establecer el valor de la variable:
- Paso Establecer variable de secuencia de tareas
- Paso Establecer variables dinámicas
- Paso Ejecutar script de PowerShell
- Variables de recopilación y dispositivo
- Objeto COM TSEnvironment
- Comando de preinicio
- Asistente para secuencia de tareas
- Asistente para medios de secuencia de tareas
Elimine una variable del entorno mediante los mismos métodos que para crear una variable. Para eliminar una variable, establezca el valor de la variable en una cadena vacía.
Puede combinar métodos para establecer una variable de secuencia de tareas en valores diferentes para la misma secuencia. Por ejemplo, establezca los valores predeterminados mediante el editor de secuencia de tareas y, a continuación, establezca valores personalizados mediante un script.
Si establece la misma variable mediante métodos diferentes, el motor de secuencia de tareas usa el orden siguiente:
Primero evalúa las variables de colección.
Las variables específicas del dispositivo invalidan la misma variable establecida en una colección.
Las variables establecidas por cualquier método durante la secuencia de tareas tienen prioridad sobre las variables de colección o dispositivo.
Limitaciones generales de los valores de variables de secuencia de tareas
Los valores de variables de secuencia de tareas no pueden tener más de 4000 caracteres.
No se puede cambiar una variable de secuencia de tareas de solo lectura. Las variables de solo lectura tienen nombres que comienzan con un carácter de subrayado (
_
).Los valores de variables de secuencia de tareas pueden distinguir entre mayúsculas y minúsculas en función del uso del valor. En la mayoría de los casos, los valores de variables de secuencia de tareas no distinguen mayúsculas de minúsculas. Una variable que incluye una contraseña distingue mayúsculas de minúsculas.
Establecer variable de secuencia de tareas
Use este paso en la secuencia de tareas para establecer una única variable en un único valor.
Para obtener más información, vea Establecer variable de secuencia de tareas.
Establecer variables dinámicas
Use este paso en la secuencia de tareas para establecer una o varias variables de secuencia de tareas. En este paso se definen reglas para determinar qué variables y valores se van a usar.
Para obtener más información, vea Establecer variables dinámicas.
Ejecución del script de PowerShell
Use este paso en la secuencia de tareas para usar un script de PowerShell para establecer una variable de secuencia de tareas.
Puede especificar un nombre de script de un paquete o escribir directamente un script de PowerShell en el paso. A continuación, use la propiedad step en Output to task sequence variable (Salida para la variable de secuencia de tareas ) para guardar la salida del script en una variable de secuencia de tareas personalizada.
Para obtener más información sobre este paso, vea Ejecutar script de PowerShell.
Nota:
También puede usar un script de PowerShell para establecer una o varias variables con el objeto TSEnvironment . Para obtener más información, consulte Uso de variables en una secuencia de tareas en ejecución en el SDK de Configuration Manager.
Escenario de ejemplo con el paso Ejecutar script de PowerShell
El entorno tiene usuarios en varios países o regiones, por lo que desea consultar el idioma del sistema operativo para establecerlo como una condición en varios pasos de Aplicar sistema operativo específicos del idioma.
Agregue una instancia del script de Ejecución de PowerShell a la secuencia de tareas antes de los pasos De aplicación del sistema operativo .
Use la opción Escribir un script de PowerShell para especificar el siguiente comando:
(Get-Culture).TwoLetterISOLanguageName
Para obtener más información sobre el cmdlet, vea Get-Culture. Para obtener más información sobre los nombres de idioma ISO de dos letras, vea Lista de códigos ISO 639-1.
Para la opción salida a la variable de secuencia de tareas, especifique
CurrentOSLanguage
.En el paso Aplicar sistema operativo para la imagen en inglés, cree la siguiente condición:
Task Sequence Variable CurrentOSLanguage equals "en"
Sugerencia
Para obtener más información sobre cómo crear una condición en un paso, vea How to access variables - Step condition(Cómo acceder a variables: condición de paso).
Guarde e implemente la secuencia de tareas.
Cuando el paso Ejecutar script de PowerShell se ejecuta en un dispositivo con la versión en inglés de Windows, el comando devuelve el valor en
. A continuación, guarda ese valor en la variable personalizada. Cuando el paso Aplicar sistema operativo de la imagen en inglés se ejecuta en el mismo dispositivo, la condición se evalúa como true. Si tiene varias instancias del paso Aplicar sistema operativo para distintos lenguajes, la secuencia de tareas ejecuta dinámicamente el paso que coincide con el idioma del sistema operativo.
Variables de recopilación y dispositivo
Puede definir variables de secuencia de tareas personalizadas para dispositivos y colecciones. Las variables que defina para un dispositivo se conocen como variables de secuencia de tareas por dispositivo. Las variables definidas para una colección se conocen como variables de secuencia de tareas por colección. Si hay un conflicto, las variables por dispositivo tienen prioridad sobre las variables por colección. Este comportamiento significa que las variables de secuencia de tareas que se asignan a un dispositivo específico tienen automáticamente una prioridad mayor que las variables asignadas a la colección que contiene el dispositivo.
Por ejemplo, el dispositivo XYZ es miembro de la colección ABC. Asigna MyVariable a la colección ABC con un valor de 1. También asigna MyVariable al dispositivo XYZ con un valor de 2. La variable asignada a XYZ tiene mayor prioridad que la variable asignada a la colección ABC. Cuando una secuencia de tareas con esta variable se ejecuta en XYZ, MyVariable tiene un valor de 2.
Puede ocultar las variables por dispositivo y por colección para que no sean visibles en la consola de Configuration Manager. Cuando se usa la opción No mostrar este valor en la consola de Configuration Manager, el valor de la variable no se muestra en la consola. El archivo de registro de secuencia de tareas (smsts.log) o el depurador de secuencia de tareas tampoco mostrarán el valor de la variable. La secuencia de tareas puede seguir usando la variable cuando se ejecuta. Si ya no desea que estas variables estén ocultas, elimínelas primero. A continuación, vuelva a definir las variables sin seleccionar la opción para ocultarlas.
Advertencia
Si incluye variables en la línea de comandos del paso Ejecutar línea de comandos , el archivo de registro de secuencia de tareas muestra la línea de comandos completa, incluidos los valores de variable. Para evitar que aparezcan datos potencialmente confidenciales en el archivo de registro, establezca la variable de secuencia de tareas OSDDoNotLogCommandTRUE
en .
Puede administrar variables por dispositivo en un sitio primario o en un sitio de administración central. Configuration Manager no admite más de 1000 variables asignadas para un dispositivo.
Importante
Al usar variables por colección para secuencias de tareas, tenga en cuenta los siguientes comportamientos:
Los cambios en las colecciones siempre se replican en toda la jerarquía. Los cambios realizados en las variables de colección se aplican no solo a los miembros del sitio actual, sino a todos los miembros de la colección de toda la jerarquía.
Al eliminar una colección, esta acción también elimina las variables de secuencia de tareas que configuró para la colección.
Creación de variables de secuencia de tareas para un dispositivo
En la consola de Configuration Manager, vaya al área de trabajo Activos y compatibilidad y seleccione el nodo Dispositivos .
Seleccione el dispositivo de destino y seleccione Propiedades.
En el cuadro de diálogo Propiedades , cambie a la pestaña Variables .
Para cada variable que quiera crear, seleccione el icono Nuevo . Especifique el nombre y el valor de la variable de secuencia de tareas. Si desea ocultar la variable para que no esté visible en la consola de Configuration Manager, seleccione la opción No mostrar este valor en la consola de Configuration Manager.
Después de agregar todas las variables a las propiedades del dispositivo, seleccione Aceptar.
Creación de variables de secuencia de tareas para una colección
En la consola de Configuration Manager, vaya al área de trabajo Activos y compatibilidad y seleccione el nodo Recopilaciones de dispositivos. Seleccione la colección de destino y elija Propiedades.
En el cuadro de diálogo Propiedades , cambie a la pestaña Variables de colección .
Para cada variable que quiera crear, seleccione el icono Nuevo . Especifique el nombre y el valor de la variable de secuencia de tareas. Si desea ocultar la variable para que no esté visible en la consola de Configuration Manager, seleccione la opción No mostrar este valor en la consola de Configuration Manager.
Opcionalmente, especifique la prioridad que Configuration Manager usará cuando se evalúen las variables de secuencia de tareas.
Después de agregar todas las variables a las propiedades de la colección, seleccione Aceptar.
Objeto COM TSEnvironment
Para trabajar con variables de un script, use el objeto TSEnvironment .
Para obtener más información, consulte Uso de variables en una secuencia de tareas en ejecución en el SDK de Configuration Manager.
Comando de preinicio
El comando de preinicio es un script o ejecutable que se ejecuta en Windows PE antes de que el usuario seleccione la secuencia de tareas. El comando de preinicio puede consultar una variable o pedir información al usuario y, a continuación, guardarla en el entorno. Use el objeto COM TSEnvironment para leer y escribir variables desde el comando de preinicio.
Para obtener más información, vea Comandos de Preinicio para medios de secuencia de tareas.
Asistente para secuencia de tareas
Después de seleccionar una secuencia de tareas en la ventana Asistente para secuencia de tareas, la página para editar variables de secuencia de tareas incluye un botón Editar . Puede usar métodos abreviados de teclado accesibles para editar las variables. Este cambio ayuda en los casos en los que un mouse no está disponible.
Asistente para medios de secuencia de tareas
Especifique variables para las secuencias de tareas que se ejecutan desde medios. Al usar medios para implementar el sistema operativo, se agregan las variables de secuencia de tareas y se especifican sus valores al crear el medio. Las variables y sus valores se almacenan en los medios.
Nota:
Las secuencias de tareas se almacenan en medios independientes. Sin embargo, todos los demás tipos de medios, como los medios preconfigurados, recuperan la secuencia de tareas de un punto de administración.
Al ejecutar una secuencia de tareas desde medios, puede agregar una variable en la página Personalización del asistente.
Use las variables multimedia en lugar de las variables por colección o por equipo. Si la secuencia de tareas se ejecuta desde medios, las variables por equipo y por colección no se aplican y no se usan.
Sugerencia
La secuencia de tareas escribe el identificador del paquete y la línea de comandos de preinicio en el archivo CreateTSMedia.log en el equipo que ejecuta la consola de Configuration Manager. Este archivo de registro incluye el valor de las variables de secuencia de tareas. Revise este archivo de registro para comprobar el valor de las variables de secuencia de tareas.
Para obtener más información, consulte Creación de medios de secuencia de tareas.
Acceso a variables
Después de especificar la variable y su valor mediante uno de los métodos de la sección anterior, úsela en las secuencias de tareas. Por ejemplo, obtenga acceso a los valores predeterminados para las variables de secuencia de tareas integradas o condicional un paso en el valor de una variable.
Use los métodos siguientes para acceder a los valores de variable en el entorno de secuencia de tareas:
- Uso en un paso
- Condición de paso
- Script personalizado
- Archivo de respuesta de instalación de Windows
Uso en un paso
Especifique un valor de variable para una configuración en un paso de secuencia de tareas. En el editor de secuencia de tareas, edite el paso y especifique el nombre de la variable como valor de campo. Incluya el nombre de la variable en signos de porcentaje (%
).
Por ejemplo, use el nombre de la variable como parte del campo Línea de comandos del paso Ejecutar línea de comandos . La siguiente línea de comandos escribe el nombre del equipo en un archivo de texto.
cmd.exe /c echo %_SMSTSMachineName% > C:\File.txt
Condición de paso
Use variables de secuencia de tareas integradas o personalizadas como parte de una condición en un paso o grupo. La secuencia de tareas evalúa el valor de la variable antes de ejecutar el paso o grupo.
Para agregar una condición que evalúe un valor de variable, siga estos pasos:
En el editor de secuencia de tareas, seleccione el paso o grupo al que desea agregar la condición.
Cambie a la pestaña Opciones del paso o grupo. Haga clic en Agregar condición y seleccione Variable de secuencia de tareas.
En el cuadro de diálogo Variable de secuencia de tareas , especifique la siguiente configuración:
Variable: nombre de la variable. Por ejemplo,
_SMSTSInWinPE
.Condición: Condición para evaluar el valor de la variable. Están disponibles las condiciones siguientes:
- Exists
- No existe
- Igual a
- No es igual a
- Mayor que
- Mayor o igual que
- Menor que
- Menor o igual que
- Como (admite caracteres comodín de
*
y?
) - No como (versión 2103 o posterior)
Valor: valor de la variable que se va a comprobar. Por ejemplo,
false
.
Los tres ejemplos anteriores forman una condición común para probar si la secuencia de tareas se ejecuta desde una imagen de arranque en Windows PE:
Variable de secuencia de tareas
_SMSTSInWinPE equals "false"
Consulte esta condición en el grupo Capturar archivos y configuración de la plantilla de secuencia de tareas predeterminada para instalar una imagen del sistema operativo existente.
Para obtener más información sobre las condiciones, vea Editor de secuencia de tareas : Condiciones.
Script personalizado
Leer y escribir variables mediante el objeto COM Microsoft.SMS.TSEnvironment mientras se ejecuta la secuencia de tareas.
En el siguiente ejemplo de Windows PowerShell se consulta la variable _SMSTSLogPath para obtener la ubicación de registro actual. El script también establece una variable personalizada.
# 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"
Archivo de respuesta de instalación de Windows
El archivo de respuesta del programa de instalación de Windows que proporcione puede tener variables de secuencia de tareas incrustadas. Use el formulario %varname%
, donde varname es el nombre de la variable. El paso Configurar Windows y Configuration Manager reemplaza la cadena de nombre de variable para el valor de variable real. Estas variables de secuencia de tareas incrustadas no se pueden usar en campos de solo numérico en un archivo de respuesta de unattend.xml.
Para obtener más información, vea Configurar Windows y ConfigMgr.