Como usar variáveis de sequência de tarefas no Configuration Manager

Aplica-se a: Gerenciador de Configurações (branch atual)

O mecanismo de sequência de tarefas no recurso de implantação do sistema operacional de Configuration Manager usa muitas variáveis para controlar seus comportamentos. Use estas variáveis para:

  • Definir condições em etapas
  • Alterar comportamentos para etapas específicas
  • Usar em scripts para ações mais complexas

Para obter uma referência de todas as variáveis de sequência de tarefas disponíveis, consulte Variáveis de sequência de tarefas.

Tipos de variáveis

Há vários tipos de variáveis:

Variáveis internas

As variáveis internas fornecem informações sobre o ambiente em que a sequência de tarefas é executada. Seus valores estão disponíveis durante toda a sequência de tarefas. Normalmente, o mecanismo de sequência de tarefas inicializa variáveis internas antes de executar qualquer etapa.

Por exemplo, _SMSTSLogPath é uma variável de ambiente que especifica o caminho para o qual Configuration Manager componentes gravam arquivos de log. Qualquer etapa de sequência de tarefas pode acessar essa variável de ambiente.

A sequência de tarefas avalia algumas variáveis antes de cada etapa. Por exemplo, _SMSTSCurrentActionName lista o nome da etapa atual.

Variáveis de ação

As variáveis de ação da sequência de tarefas especificam as configurações que uma única etapa de sequência de tarefas usa. Por padrão, a etapa inicializa suas configurações antes de ser executada. Essas configurações estão disponíveis somente enquanto a etapa da sequência de tarefas associada é executada. A sequência de tarefas adiciona o valor da variável de ação ao ambiente antes de executar a etapa. Em seguida, ele remove o valor do ambiente após a execução da etapa.

Por exemplo, você adiciona a etapa Executar Linha de Comando a uma sequência de tarefas. Esta etapa inclui uma propriedade Iniciar In . A sequência de tarefas armazena um valor padrão para essa propriedade como a WorkingDirectory variável. A sequência de tarefas inicializa esse valor antes de executar a etapa Executar Linha de Comando . Enquanto essa etapa estiver em execução, acesse o valor da propriedade Iniciar In a WorkingDirectory partir do valor. Após a conclusão da etapa, a sequência de tarefas remove o valor da WorkingDirectory variável do ambiente. Se a sequência de tarefas incluir outra etapa executar linha de comando , ela inicializará uma nova WorkingDirectory variável. Nesse momento, a sequência de tarefas define a variável como o valor inicial da etapa atual. Para obter mais informações, consulte WorkingDirectory.

O valor padrão de uma variável de ação está presente quando a etapa é executada. Se você definir um novo valor, ele estará disponível para várias etapas na sequência de tarefas. Se você substituir um valor padrão, o novo valor permanecerá no ambiente. Esse novo valor substitui o valor padrão para outras etapas na sequência de tarefas. Por exemplo, você adiciona uma etapa Definir variável de sequência de tarefas como a primeira etapa da sequência de tarefas. Esta etapa define a WorkingDirectory variável como C:\. Qualquer etapa executar linha de comando na sequência de tarefas usa o novo valor do diretório inicial.

Algumas etapas da sequência de tarefas marcam determinadas variáveis de ação como saída. Etapas posteriores na sequência de tarefas leem essas variáveis de saída.

Observação

Nem todas as etapas da sequência de tarefas têm variáveis de ação. Por exemplo, embora haja variáveis associadas à ação Habilitar BitLocker , não há variáveis associadas à ação Desabilitar BitLocker .

Variáveis personalizadas

Essas variáveis são qualquer que Configuration Manager não cria. Inicialize suas próprias variáveis para usar como condições, em linhas de comando ou em scripts.

Quando você especificar um nome para uma nova variável de sequência de tarefas, siga estas diretrizes:

  • O nome da variável de sequência de tarefas pode incluir letras, números, o caractere sublinhado (_) e um hífen (-).

  • Nomes de variáveis de sequência de tarefas têm um comprimento mínimo de um caractere e um comprimento máximo de 256 caracteres.

  • As variáveis definidas pelo usuário devem começar com uma letra (A-Z ou a-z).

  • Nomes de variáveis definidos pelo usuário não podem começar com o caractere sublinhado. Somente variáveis de sequência de tarefas somente leitura são precedidas pelo caractere sublinhado.

  • Nomes de variáveis de sequência de tarefas não são sensíveis a casos. Por exemplo, OSDVAR e osdvar são a mesma variável de sequência de tarefas.

  • Nomes de variáveis de sequência de tarefas não podem começar ou terminar com um espaço. Eles também não podem ter espaços inseridos. A sequência de tarefas ignora todos os espaços no início ou no final de um nome de variável.

Não há um limite definido para quantas variáveis de sequência de tarefas você pode criar. No entanto, o número de variáveis é limitado pelo tamanho do ambiente de sequência de tarefas. O limite total de tamanho para o ambiente de sequência de tarefas é de 8 KB. Para obter mais informações, consulte Reduzir o tamanho da política de sequência de tarefas.

Variáveis somente leitura

Você não pode alterar o valor de algumas variáveis, que são somente leitura. Normalmente, o nome começa com um caractere sublinhado (_). A sequência de tarefas as usa para suas operações. As variáveis somente leitura estão visíveis no ambiente da sequência de tarefas.

Essas variáveis são úteis em scripts ou linhas de comando. Por exemplo, executando uma linha de comando e canalizando a saída para um arquivo de log com _SMSTSLogPath os outros arquivos de log.

Observação

As variáveis de sequência de tarefas somente leitura podem ser lidas por etapas em uma sequência de tarefas, mas não podem ser definidas. Por exemplo, use uma variável somente leitura como parte da linha de comando para uma etapa executar linha de comando . Você não pode definir uma variável somente leitura usando a etapa Definir Variável de Sequência de Tarefas .

Variáveis de matriz

A sequência de tarefas armazena algumas variáveis como uma matriz. Cada elemento na matriz representa as configurações de um único objeto. Use essas variáveis quando um dispositivo tiver mais de um objeto para configurar. As seguintes etapas da sequência de tarefas usam variáveis de matriz:

Como definir variáveis

Para variáveis ou variáveis personalizadas que não são somente leitura, há vários métodos para inicializar e definir o valor da variável:

Exclua uma variável do ambiente usando os mesmos métodos que a criação de uma variável. Para excluir uma variável, defina o valor da variável como uma cadeia de caracteres vazia.

Você pode combinar métodos para definir uma variável de sequência de tarefas para valores diferentes para a mesma sequência. Por exemplo, defina os valores padrão usando o editor de sequência de tarefas e defina valores personalizados usando um script.

Se você definir a mesma variável por métodos diferentes, o mecanismo de sequência de tarefas usará a seguinte ordem:

  1. Ele avalia as variáveis de coleção primeiro.

  2. Variáveis específicas do dispositivo substituem o mesmo conjunto de variáveis em uma coleção.

  3. As variáveis definidas por qualquer método durante a sequência de tarefas têm precedência sobre a coleção ou variáveis de dispositivo.

Limitações gerais para valores de variável de sequência de tarefas

  • Os valores de variável de sequência de tarefas não podem ter mais de 4.000 caracteres.

  • Você não pode alterar uma variável de sequência de tarefas somente leitura. As variáveis somente leitura têm nomes que começam com um caractere sublinhado (_).

  • Os valores de variável de sequência de tarefas podem ser sensíveis a casos, dependendo do uso do valor. Na maioria dos casos, os valores de variável de sequência de tarefas não são sensíveis a casos. Uma variável que inclui uma senha é sensível a maiúsculas de minúsculas.

Definir variável de sequência de tarefas

Use esta etapa na sequência de tarefas para definir uma única variável como um único valor.

Para obter mais informações, consulte Definir variável de sequência de tarefas.

Definir variáveis dinâmicas

Use esta etapa na sequência de tarefas para definir uma ou mais variáveis de sequência de tarefas. Você define regras nesta etapa para determinar quais variáveis e valores usar.

Para obter mais informações, consulte Definir Variáveis Dinâmicas.

Executar script do PowerShell

Use esta etapa na sequência de tarefas para usar um script do PowerShell para definir uma variável de sequência de tarefas.

Você pode especificar um nome de script de um pacote ou inserir diretamente um script do PowerShell na etapa. Em seguida, use a propriedade de etapa para Saída para a variável de sequência de tarefas para salvar a saída do script em uma variável de sequência de tarefas personalizada.

Para obter mais informações sobre esta etapa, consulte Executar Script do PowerShell.

Observação

Você também pode usar um script do PowerShell para definir uma ou mais variáveis com o objeto TSEnvironment . Para obter mais informações, consulte Como usar variáveis em uma sequência de tarefas em execução no SDK Configuration Manager.

Cenário de exemplo com a etapa Executar Script do PowerShell

Seu ambiente tem usuários em vários países/regiões, portanto, você deseja consultar a linguagem do sistema operacional para definir como uma condição em várias etapas específicas do sistema operacional Apply .

  1. Adicione uma instância do Script Executar PowerShell à sequência de tarefas antes das etapas aplicar o sistema operacional .

  2. Use a opção para inserir um script do PowerShell para especificar o seguinte comando:

    (Get-Culture).TwoLetterISOLanguageName
    

    Para obter mais informações sobre o cmdlet, consulte Get-Culture. Para obter mais informações sobre os nomes de idioma ISO de duas letras, consulte Lista de códigos ISO 639-1.

  3. Para a opção Saída para a variável de sequência de tarefas, especifique CurrentOSLanguage.

    Captura de tela do exemplo Executar etapa do Script do PowerShell

  4. Na etapa Aplicar sistema operacional para a imagem em inglês, crie a seguinte condição: Task Sequence Variable CurrentOSLanguage equals "en"

    Captura de tela da condição de exemplo na etapa Aplicar sistema operacional

    Dica

    Para obter mais informações sobre como criar uma condição em uma etapa, consulte Como acessar variáveis – Condição de etapa.

  5. Salve e implante a sequência de tarefas.

Quando a etapa Executar Script do PowerShell é executada em um dispositivo com a versão em inglês do Windows, o comando retorna o valor en. Em seguida, ele salva esse valor na variável personalizada. Quando a etapa Aplicar sistema operacional para a imagem em inglês é executada no mesmo dispositivo, a condição é avaliada como true. Se você tiver várias instâncias da etapa Aplicar sistema operacional para idiomas diferentes, a sequência de tarefas executará dinamicamente a etapa que corresponde ao idioma do sistema operacional.

Variáveis de coleção e dispositivo

Você pode definir variáveis de sequência de tarefas personalizadas para dispositivos e coleções. As variáveis que você define para um dispositivo são conhecidas como variáveis de sequência de tarefas por dispositivo. As variáveis definidas para uma coleção são conhecidas como variáveis de sequência de tarefas por coleção. Se houver um conflito, as variáveis por dispositivo têm precedência sobre variáveis por coleção. Esse comportamento significa que as variáveis de sequência de tarefas atribuídas a um dispositivo específico têm automaticamente uma prioridade maior do que as variáveis atribuídas à coleção que contém o dispositivo.

Por exemplo, o dispositivo XYZ é um membro da coleção ABC. Você atribui o MyVariable à coleção ABC com um valor de 1. Você também atribui o MyVariable ao dispositivo XYZ com um valor de 2. A variável atribuída ao XYZ tem prioridade maior do que a variável atribuída à coleção ABC. Quando uma sequência de tarefas com essa variável é executada no XYZ, MyVariable tem um valor de 2.

Você pode ocultar variáveis por dispositivo e por coleção para que elas não sejam visíveis no console Configuration Manager. Quando você usa a opção Não exibir esse valor no console Configuration Manager, o valor da variável não é exibido no console. O arquivo de log de sequência de tarefas (smsts.log) ou o depurador de sequência de tarefas também não mostrarão o valor da variável. A variável ainda pode ser usada pela sequência de tarefas quando é executada. Se você não quiser mais que essas variáveis sejam ocultas, exclua-as primeiro. Em seguida, redefinir as variáveis sem selecionar a opção para escondê-las.

Aviso

Se você incluir variáveis na linha de comando da etapa Executar Linha de Comando , o arquivo de log de sequência de tarefas exibirá a linha de comando completa, incluindo os valores de variável. Para evitar que dados potencialmente confidenciais apareçam no arquivo de log, defina a variável de sequência de tarefas OSDDoNotLogCommand como TRUE.

Você pode gerenciar variáveis por dispositivo em um site primário ou em um site de administração central. Configuration Manager não dá suporte a mais de 1.000 variáveis atribuídas para um dispositivo.

Importante

Ao usar variáveis por coleção para sequências de tarefas, considere os seguintes comportamentos:

  • As alterações nas coleções são sempre replicadas em toda a hierarquia. Todas as alterações feitas em variáveis de coleção se aplicam não apenas aos membros do site atual, mas a todos os membros da coleção em toda a hierarquia.

  • Quando você exclui uma coleção, essa ação também exclui as variáveis de sequência de tarefas que você configurou para a coleção.

Criar variáveis de sequência de tarefas para um dispositivo

  1. No console Configuration Manager, acesse o workspace Ativos e Conformidade e selecione o nó Dispositivos.

  2. Selecione o dispositivo de destino e selecione Propriedades.

  3. Na caixa de diálogo Propriedades , alterne para a guia Variáveis .

  4. Para cada variável que você deseja criar, selecione o ícone Novo . Especifique o Nome e o Valor da variável de sequência de tarefas. Se você quiser ocultar a variável para que ela não esteja visível no console Configuration Manager, selecione a opção Não exibir esse valor no console Configuration Manager.

  5. Depois de adicionar todas as variáveis às propriedades do dispositivo, selecione OK.

Criar variáveis de sequência de tarefas para uma coleção

  1. No console Configuration Manager, acesse o workspace Ativos e Conformidade e selecione o nó Coleções de Dispositivos. Selecione a coleção de destino e escolha Propriedades.

  2. Na caixa de diálogo Propriedades , alterne para a guia Variáveis de Coleção .

  3. Para cada variável que você deseja criar, selecione o ícone Novo . Especifique o Nome e o Valor da variável de sequência de tarefas. Se você quiser ocultar a variável para que ela não esteja visível no console Configuration Manager, selecione a opção Não exibir esse valor no console Configuration Manager.

  4. Opcionalmente, especifique a prioridade para Configuration Manager usar quando as variáveis de sequência de tarefas forem avaliadas.

  5. Depois de adicionar todas as variáveis às propriedades da coleção, selecione OK.

Objeto COM TSEnvironment

Para trabalhar com variáveis de um script, use o objeto TSEnvironment .

Para obter mais informações, consulte Como usar variáveis em uma sequência de tarefas em execução no SDK Configuration Manager.

Comando Prestart

O comando prestart é um script ou executável que é executado no Windows PE antes que o usuário selecione a sequência de tarefas. O comando prestart pode consultar uma variável ou solicitar informações ao usuário e salvá-la no ambiente. Use o objeto COM TSEnvironment para ler e gravar variáveis do comando prestart.

Para obter mais informações, confira Comandos prestart para mídia de sequência de tarefas.

Assistente de Sequência de Tarefas

Depois de selecionar uma sequência de tarefas na janela Assistente de Sequência de Tarefas, a página para editar variáveis de sequência de tarefas inclui um botão Editar . Você pode usar atalhos de teclado acessíveis para editar as variáveis. Essa alteração ajuda nos casos em que um mouse não está disponível.

Assistente de mídia de sequência de tarefas

Especifique variáveis para sequências de tarefas que são executadas a partir da mídia. Ao usar a mídia para implantar o sistema operacional, você adiciona as variáveis de sequência de tarefas e especifica seus valores ao criar a mídia. As variáveis e seus valores são armazenados na mídia.

Observação

As sequências de tarefas são armazenadas em mídia autônoma. No entanto, todos os outros tipos de mídia, como mídia prestaged, recuperam a sequência de tarefas de um ponto de gerenciamento.

Ao executar uma sequência de tarefas da mídia, você pode adicionar uma variável na página Personalização do assistente.

Use as variáveis de mídia no lugar de variáveis por coleção ou por computador. Se a sequência de tarefas estiver sendo executada a partir da mídia, as variáveis por computador e por coleção não se aplicarão e não serão usadas.

Dica

A sequência de tarefas grava a ID do pacote e a linha de comando prestart no arquivo CreateTSMedia.log no computador que executa o console Configuration Manager. Este arquivo de log inclui o valor de todas as variáveis de sequência de tarefas. Examine este arquivo de log para verificar o valor das variáveis de sequência de tarefas.

Para obter mais informações, consulte Criar mídia de sequência de tarefas.

Como acessar variáveis

Depois de especificar a variável e seu valor usando um dos métodos da seção anterior, use-a em suas sequências de tarefas. Por exemplo, acesse valores padrão para variáveis de sequência de tarefas internas ou torne uma etapa condicional sobre o valor de uma variável.

Use os seguintes métodos para acessar valores variáveis no ambiente da sequência de tarefas:

Usar em uma etapa

Especifique um valor variável para uma configuração em uma etapa de sequência de tarefas. No editor de sequência de tarefas, edite a etapa e especifique o nome da variável como o valor de campo. Inclua o nome da variável em sinais percentuais (%).

Por exemplo, use o nome da variável como parte do campo Linha de Comando da etapa Executar Linha de Comando . A linha de comando a seguir grava o nome do computador em um arquivo de texto.

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

Condição de etapa

Use variáveis de sequência de tarefas internas ou personalizadas como parte de uma condição em uma etapa ou grupo. A sequência de tarefas avalia o valor da variável antes de executar a etapa ou o grupo.

Para adicionar uma condição que avalia um valor variável, faça as seguintes etapas:

  1. No editor de sequência de tarefas, selecione a etapa ou o grupo ao qual você deseja adicionar a condição.

  2. Alterne para a guia Opções para a etapa ou grupo. Clique em Adicionar Condição e selecione Variável de Sequência de Tarefas.

  3. Na caixa de diálogo Variável de Sequência de Tarefas , especifique as seguintes configurações:

    • Variável: o nome da variável. Por exemplo, _SMSTSInWinPE.

    • Condição: a condição para avaliar o valor da variável. As seguintes condições estão disponíveis:

      • Exists
      • Não existe
      • Igual a
      • Não é igual
      • Maior que
      • Maior que ou igual
      • Menor que
      • Menor ou igual
      • Como (dá suporte a curingas de * e ?)
      • Não como (versão 2103 ou posterior)
    • Valor: o valor da variável a ser verificada. Por exemplo, false.

Os três exemplos acima formam uma condição comum para testar se a sequência de tarefas está sendo executada a partir de uma imagem de inicialização no Windows PE:

Variável sequência de tarefas_SMSTSInWinPE equals "false"

Consulte essa condição no grupo Capturar Arquivos e Configurações do modelo de sequência de tarefas padrão para instalar uma imagem do sistema operacional existente.

Para obter mais informações sobre as condições, consulte Editor de sequência de tarefas – Condições.

Script personalizado

Ler e gravar variáveis usando o Microsoft.SMS. Objeto COM TSEnvironment enquanto a sequência de tarefas está em execução.

O exemplo Windows PowerShell a seguir consulta a variável _SMSTSLogPath para obter o local de log atual. O script também define uma variável 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"

Arquivo de resposta de configuração do Windows

O arquivo de resposta de configuração do Windows que você fornece pode ter variáveis de sequência de tarefas inseridas. Use o formulário %varname%, em que varname é o nome da variável. A etapa Configurar Windows e ConfigMgr substitui a cadeia de caracteres de nome da variável pelo valor real da variável. Essas variáveis de sequência de tarefas inseridas não podem ser usadas em campos somente numéricos em um arquivo de resposta unattend.xml.

Para obter mais informações, consulte Configurar Windows e ConfigMgr.

Confira também