Comment utiliser des variables de séquence de tâches dans Configuration Manager

S’applique à : Gestionnaire de Configuration (branche actuelle)

Le moteur de séquence de tâches dans la fonctionnalité de déploiement du système d’exploitation de Configuration Manager utilise de nombreuses variables pour contrôler ses comportements. Utilisez ces variables pour :

  • Définir des conditions sur les étapes
  • Modifier les comportements pour des étapes spécifiques
  • Utiliser dans des scripts pour des actions plus complexes

Pour obtenir des informations de référence sur toutes les variables de séquence de tâches disponibles, consultez Variables de séquence de tâches.

Types de variables

Il existe plusieurs types de variables :

Variables intégrées

Les variables intégrées fournissent des informations sur l’environnement dans lequel la séquence de tâches s’exécute. Leurs valeurs sont disponibles dans toute la séquence de tâches. En règle générale, le moteur de séquence de tâches initialise les variables intégrées avant d’exécuter des étapes.

Par exemple, _SMSTSLogPath est une variable d’environnement qui spécifie le chemin vers lequel les composants Configuration Manager écrivent des fichiers journaux. Toute étape de séquence de tâches peut accéder à cette variable d’environnement.

La séquence de tâches évalue certaines variables avant chaque étape. Par exemple, _SMSTSCurrentActionName répertorie le nom de l’étape actuelle.

Variables d’action

Les variables d’action de séquence de tâches spécifient les paramètres de configuration qu’une seule étape de séquence de tâches utilise. Par défaut, l’étape initialise ses paramètres avant de s’exécuter. Ces paramètres sont disponibles uniquement pendant l’exécution de l’étape de séquence de tâches associée. La séquence de tâches ajoute la valeur de la variable d’action à l’environnement avant d’exécuter l’étape. Il supprime ensuite la valeur de l’environnement après l’exécution de l’étape.

Par exemple, vous ajoutez l’étape Exécuter la ligne de commande à une séquence de tâches. Cette étape inclut une propriété Démarrer dans . La séquence de tâches stocke une valeur par défaut pour cette propriété en tant que WorkingDirectory variable. La séquence de tâches initialise cette valeur avant d’exécuter l’étape Exécuter la ligne de commande . Pendant l’exécution de cette étape, accédez à la valeur de la propriété Démarrer dans à partir de la WorkingDirectory valeur . Une fois l’étape terminée, la séquence de tâches supprime la valeur de la WorkingDirectory variable de l’environnement. Si la séquence de tâches inclut une autre étape Exécuter la ligne de commande , elle initialise une nouvelle WorkingDirectory variable. À ce moment-là, la séquence de tâches définit la variable sur la valeur de départ de l’étape actuelle. Pour plus d’informations, consultez WorkingDirectory.

La valeur par défaut d’une variable d’action est présente lors de l’exécution de l’étape. Si vous définissez une nouvelle valeur, elle est disponible pour plusieurs étapes de la séquence de tâches. Si vous remplacez une valeur par défaut, la nouvelle valeur reste dans l’environnement. Cette nouvelle valeur remplace la valeur par défaut pour les autres étapes de la séquence de tâches. Par exemple, vous ajoutez une étape Définir une variable de séquence de tâches comme première étape de la séquence de tâches. Cette étape définit la variable sur WorkingDirectoryC:\. Toute étape Exécuter la ligne de commande dans la séquence de tâches utilise la nouvelle valeur de répertoire de départ.

Certaines étapes de séquence de tâches marquent certaines variables d’action comme sortie. Les étapes ultérieures de la séquence de tâches lisent ces variables de sortie.

Remarque

Toutes les étapes de séquence de tâches n’ont pas de variables d’action. Par exemple, bien qu’il existe des variables associées à l’action Activer BitLocker , aucune variable n’est associée à l’action Désactiver BitLocker .

Variables personnalisées

Ces variables sont toutes celles que Configuration Manager ne crée pas. Initialisez vos propres variables à utiliser comme conditions, dans des lignes de commande ou dans des scripts.

Lorsque vous spécifiez un nom pour une nouvelle variable de séquence de tâches, suivez ces instructions :

  • Le nom de la variable de séquence de tâches peut inclure des lettres, des chiffres, un trait de soulignement (_) et un trait d’union (-).

  • Les noms de variables de séquence de tâches ont une longueur minimale d’un caractère et une longueur maximale de 256 caractères.

  • Les variables définies par l’utilisateur doivent commencer par une lettre (A-Z ou a-z).

  • Les noms de variables définis par l’utilisateur ne peuvent pas commencer par le caractère de soulignement. Seules les variables de séquence de tâches en lecture seule sont précédées du caractère de soulignement.

  • Les noms de variables de séquence de tâches ne respectent pas la casse. Par exemple, OSDVAR et osdvar sont la même variable de séquence de tâches.

  • Les noms de variables de séquence de tâches ne peuvent pas commencer ou se terminer par un espace. Ils ne peuvent pas non plus avoir d’espaces incorporés. La séquence de tâches ignore les espaces au début ou à la fin d’un nom de variable.

Il n’existe aucune limite définie au nombre de variables de séquence de tâches que vous pouvez créer. Toutefois, le nombre de variables est limité par la taille de l’environnement de séquence de tâches. La limite de taille totale pour l’environnement de séquence de tâches est de 8 Ko. Pour plus d’informations, consultez Réduire la taille de la stratégie de séquence de tâches.

Variables en lecture seule

Vous ne pouvez pas modifier la valeur de certaines variables, qui sont en lecture seule. En règle générale, le nom commence par un trait de soulignement (_). La séquence de tâches les utilise pour ses opérations. Les variables en lecture seule sont visibles dans l’environnement de séquence de tâches.

Ces variables sont utiles dans les scripts ou les lignes de commande. Par exemple, l’exécution d’une ligne de commande et la redirection de la sortie vers un fichier journal avec _SMSTSLogPath les autres fichiers journaux.

Remarque

Les variables de séquence de tâches en lecture seule peuvent être lues par étapes dans une séquence de tâches, mais elles ne peuvent pas être définies. Par exemple, utilisez une variable en lecture seule dans le cadre de la ligne de commande pour une étape Exécuter la ligne de commande . Vous ne pouvez pas définir une variable en lecture seule à l’aide de l’étape Définir une variable de séquence de tâches .

Variables de tableau

La séquence de tâches stocke certaines variables sous forme de tableau. Chaque élément du tableau représente les paramètres d’un objet unique. Utilisez ces variables lorsqu’un appareil a plusieurs objets à configurer. Les étapes de séquence de tâches suivantes utilisent des variables de tableau :

Guide pratique pour définir des variables

Pour les variables personnalisées ou les variables qui ne sont pas en lecture seule, il existe plusieurs méthodes pour initialiser et définir la valeur de la variable :

Supprimez une variable de l’environnement en utilisant les mêmes méthodes que la création d’une variable. Pour supprimer une variable, définissez la valeur de la variable sur une chaîne vide.

Vous pouvez combiner des méthodes pour définir une variable de séquence de tâches sur différentes valeurs pour la même séquence. Par exemple, définissez les valeurs par défaut à l’aide de l’éditeur de séquence de tâches, puis définissez des valeurs personnalisées à l’aide d’un script.

Si vous définissez la même variable par différentes méthodes, le moteur de séquence de tâches utilise l’ordre suivant :

  1. Il évalue d’abord les variables de collection.

  2. Les variables spécifiques à l’appareil remplacent le même jeu de variables sur un regroupement.

  3. Les variables définies par n’importe quelle méthode pendant la séquence de tâches sont prioritaires sur les variables de regroupement ou d’appareil.

Limitations générales pour les valeurs des variables de séquence de tâches

  • Les valeurs des variables de séquence de tâches ne peuvent pas comporter plus de 4 000 caractères.

  • Vous ne pouvez pas modifier une variable de séquence de tâches en lecture seule. Les variables en lecture seule ont des noms qui commencent par un trait de soulignement (_).

  • Les valeurs des variables de séquence de tâches peuvent respecter la casse en fonction de l’utilisation de la valeur. Dans la plupart des cas, les valeurs des variables de séquence de tâches ne respectent pas la casse. Une variable qui inclut un mot de passe respecte la casse.

Définir la variable de séquence de tâches

Utilisez cette étape dans la séquence de tâches pour définir une variable unique sur une valeur unique.

Pour plus d’informations, consultez Définir une variable de séquence de tâches.

Définir des variables dynamiques

Utilisez cette étape dans la séquence de tâches pour définir une ou plusieurs variables de séquence de tâches. Vous définissez des règles dans cette étape pour déterminer les variables et les valeurs à utiliser.

Pour plus d’informations, consultez Définir des variables dynamiques.

Exécuter un script PowerShell

Utilisez cette étape dans la séquence de tâches pour utiliser un script PowerShell afin de définir une variable de séquence de tâches.

Vous pouvez spécifier un nom de script à partir d’un package ou entrer directement un script PowerShell à l’étape. Utilisez ensuite la propriété step de Sortie vers la variable de séquence de tâches pour enregistrer la sortie du script dans une variable de séquence de tâches personnalisée.

Pour plus d’informations sur cette étape, consultez Exécuter un script PowerShell.

Remarque

Vous pouvez également utiliser un script PowerShell pour définir une ou plusieurs variables avec l’objet TSEnvironment . Pour plus d’informations, consultez Guide pratique pour utiliser des variables dans une séquence de tâches en cours d’exécution dans le Kit de développement logiciel (SDK) Configuration Manager.

Exemple de scénario avec l’étape Exécuter le script PowerShell

Votre environnement a des utilisateurs dans plusieurs pays/régions. Vous souhaitez donc interroger la langue du système d’exploitation à définir comme condition sur plusieurs étapes Appliquer le système d’exploitation spécifiques à une langue.

  1. Ajoutez une instance d’Exécuter le script PowerShell à la séquence de tâches avant les étapes Appliquer le système d’exploitation .

  2. Utilisez l’option Entrer un script PowerShell pour spécifier la commande suivante :

    (Get-Culture).TwoLetterISOLanguageName
    

    Pour plus d’informations sur l’applet de commande, consultez Get-Culture. Pour plus d’informations sur les noms de langues ISO à deux lettres, consultez Liste des codes ISO 639-1.

  3. Pour l’option De sortie vers la variable de séquence de tâches, spécifiez CurrentOSLanguage.

    Capture d’écran de l’exemple d’étape Exécuter un script PowerShell

  4. À l’étape Appliquer le système d’exploitation pour l’image en anglais, créez la condition suivante : Task Sequence Variable CurrentOSLanguage equals "en"

    Capture d’écran de l’exemple de condition à l’étape Appliquer le système d’exploitation

    Conseil

    Pour plus d’informations sur la création d’une condition sur une étape, consultez Comment accéder aux variables - Condition d’étape.

  5. Enregistrez et déployez la séquence de tâches.

Lorsque l’étape Exécuter le script PowerShell s’exécute sur un appareil avec la version anglaise de Windows, la commande retourne la valeur en. Il enregistre ensuite cette valeur dans la variable personnalisée. Lorsque l’étape Appliquer le système d’exploitation pour l’image en langue anglaise s’exécute sur le même appareil, la condition prend la valeur true. Si vous avez plusieurs instances de l’étape Appliquer le système d’exploitation pour différentes langues, la séquence de tâches exécute dynamiquement l’étape qui correspond à la langue du système d’exploitation.

Variables de regroupement et d’appareil

Vous pouvez définir des variables de séquence de tâches personnalisées pour les appareils et les regroupements. Les variables que vous définissez pour un appareil sont appelées variables de séquence de tâches par appareil. Les variables définies pour une collection sont appelées variables de séquence de tâches par collection. En cas de conflit, les variables par appareil sont prioritaires sur les variables par collection. Ce comportement signifie que les variables de séquence de tâches qui sont affectées à un appareil spécifique ont automatiquement une priorité plus élevée que les variables affectées au regroupement qui contient l’appareil.

Par exemple, l’appareil XYZ est membre du regroupement ABC. Vous affectez MyVariable à la collection ABC avec la valeur 1. Vous affectez également MyVariable à l’appareil XYZ avec la valeur 2. La variable affectée à XYZ a une priorité plus élevée que la variable affectée à la collection ABC. Lorsqu’une séquence de tâches avec cette variable s’exécute sur XYZ, MyVariable a la valeur 2.

Vous pouvez masquer les variables par appareil et par collection afin qu’elles ne soient pas visibles dans la console Configuration Manager. Lorsque vous utilisez l’option Ne pas afficher cette valeur dans la console Configuration Manager, la valeur de la variable n’est pas affichée dans la console. Le fichier journal de séquence de tâches (smsts.log) ou le débogueur de séquence de tâches n’affiche pas non plus la valeur de la variable. La variable peut toujours être utilisée par la séquence de tâches lors de son exécution. Si vous ne souhaitez plus que ces variables soient masquées, supprimez-les d’abord. Redéfinissez ensuite les variables sans sélectionner l’option permettant de les masquer.

Avertissement

Si vous incluez des variables dans la ligne de commande de l’étape Exécuter la ligne de commande, le fichier journal de la séquence de tâches affiche la ligne de commande complète, y compris les valeurs des variables. Pour empêcher l’affichage de données potentiellement sensibles dans le fichier journal, définissez la variable de séquence de tâches OSDDoNotLogCommand surTRUE.

Vous pouvez gérer des variables par appareil sur un site principal ou sur un site d’administration centrale. Configuration Manager ne prend pas en charge plus de 1 000 variables affectées pour un appareil.

Importante

Lorsque vous utilisez des variables par collection pour les séquences de tâches, tenez compte des comportements suivants :

  • Les modifications apportées aux collections sont toujours répliquées dans toute la hiérarchie. Toutes les modifications que vous apportez aux variables de collection s’appliquent non seulement aux membres du site actuel, mais également à tous les membres de la collection dans toute la hiérarchie.

  • Lorsque vous supprimez une collection, cette action supprime également les variables de séquence de tâches que vous avez configurées pour la collection.

Créer des variables de séquence de tâches pour un appareil

  1. Dans la console Configuration Manager, accédez à l’espace de travail Ressources et conformité, puis sélectionnez le nœud Appareils.

  2. Sélectionnez l’appareil cible, puis sélectionnez Propriétés.

  3. Dans la boîte de dialogue Propriétés , basculez vers l’onglet Variables .

  4. Pour chaque variable que vous souhaitez créer, sélectionnez l’icône Nouveau . Spécifiez le Nom et la Valeur de la variable de séquence de tâches. Si vous souhaitez masquer la variable afin qu’elle ne soit pas visible dans la console Configuration Manager, sélectionnez l’option Ne pas afficher cette valeur dans la console Configuration Manager.

  5. Une fois que vous avez ajouté toutes les variables aux propriétés de l’appareil, sélectionnez OK.

Créer des variables de séquence de tâches pour une collection

  1. Dans la console Configuration Manager, accédez à l’espace de travail Ressources et conformité, puis sélectionnez le nœud Regroupements d’appareils. Sélectionnez la collection cible, puis choisissez Propriétés.

  2. Dans la boîte de dialogue Propriétés , basculez vers l’onglet Variables de collection .

  3. Pour chaque variable que vous souhaitez créer, sélectionnez l’icône Nouveau . Spécifiez le Nom et la Valeur de la variable de séquence de tâches. Si vous souhaitez masquer la variable afin qu’elle ne soit pas visible dans la console Configuration Manager, sélectionnez l’option Ne pas afficher cette valeur dans la console Configuration Manager.

  4. Si vous le souhaitez, spécifiez la priorité pour Configuration Manager à utiliser lors de l’évaluation des variables de séquence de tâches.

  5. Après avoir ajouté toutes les variables aux propriétés de la collection, sélectionnez OK.

Objet COM TSEnvironment

Pour utiliser des variables à partir d’un script, utilisez l’objet TSEnvironment .

Pour plus d’informations, consultez Guide pratique pour utiliser des variables dans une séquence de tâches en cours d’exécution dans le Kit de développement logiciel (SDK) Configuration Manager.

Commande de prédémarrage

La commande de prédémarrage est un script ou un exécutable qui s’exécute dans Windows PE avant que l’utilisateur sélectionne la séquence de tâches. La commande de prédémarrage peut interroger une variable ou inviter l’utilisateur à fournir des informations, puis l’enregistrer dans l’environnement. Utilisez l’objet COM TSEnvironment pour lire et écrire des variables à partir de la commande de prédémarrage.

Pour plus d’informations, consultez Commandes de prédémarrage pour le média de séquence de tâches.

Assistant Séquence de tâches

Une fois que vous avez sélectionné une séquence de tâches dans la fenêtre de l’Assistant Séquence de tâches, la page de modification des variables de séquence de tâches inclut un bouton Modifier . Vous pouvez utiliser des raccourcis clavier accessibles pour modifier les variables. Cette modification est utile dans les cas où une souris n’est pas disponible.

Assistant Média de séquence de tâches

Spécifiez des variables pour les séquences de tâches qui s’exécutent à partir d’un média. Lorsque vous utilisez un média pour déployer le système d’exploitation, vous ajoutez les variables de séquence de tâches et spécifiez leurs valeurs lorsque vous créez le média. Les variables et leurs valeurs sont stockées sur le média.

Remarque

Les séquences de tâches sont stockées sur un média autonome. Toutefois, tous les autres types de média, tels que les médias préparés, récupèrent la séquence de tâches à partir d’un point de gestion.

Lorsque vous exécutez une séquence de tâches à partir d’un média, vous pouvez ajouter une variable dans la page Personnalisation de l’Assistant.

Utilisez les variables multimédias à la place de variables par collection ou par ordinateur. Si la séquence de tâches s’exécute à partir d’un média, les variables par ordinateur et par collection ne s’appliquent pas et ne sont pas utilisées.

Conseil

La séquence de tâches écrit l’ID de package et la ligne de commande de prédémarrage dans le fichier CreateTSMedia.log sur l’ordinateur qui exécute la console Configuration Manager. Ce fichier journal inclut la valeur de toutes les variables de séquence de tâches. Passez en revue ce fichier journal pour vérifier la valeur des variables de séquence de tâches.

Pour plus d’informations, consultez Créer un média de séquence de tâches.

Comment accéder aux variables

Après avoir spécifié la variable et sa valeur à l’aide de l’une des méthodes de la section précédente, utilisez-la dans vos séquences de tâches. Par exemple, accédez aux valeurs par défaut des variables de séquence de tâches intégrées, ou rendez une étape conditionnelle sur la valeur d’une variable.

Utilisez les méthodes suivantes pour accéder aux valeurs des variables dans l’environnement de séquence de tâches :

Utiliser dans une étape

Spécifiez une valeur de variable pour un paramètre dans une étape de séquence de tâches. Dans l’éditeur de séquence de tâches, modifiez l’étape et spécifiez le nom de la variable comme valeur de champ. Placez le nom de la variable dans des signes de pourcentage (%).

Par exemple, utilisez le nom de la variable dans le champ Ligne de commande de l’étape Exécuter la ligne de commande . La ligne de commande suivante écrit le nom de l’ordinateur dans un fichier texte.

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

Condition d’étape

Utilisez des variables de séquence de tâches intégrées ou personnalisées dans le cadre d’une condition sur une étape ou un groupe. La séquence de tâches évalue la valeur de la variable avant d’exécuter l’étape ou le groupe.

Pour ajouter une condition qui évalue une valeur de variable, procédez comme suit :

  1. Dans l’éditeur de séquence de tâches, sélectionnez l’étape ou le groupe auquel vous souhaitez ajouter la condition.

  2. Basculez vers l’onglet Options pour l’étape ou le groupe. Cliquez sur Ajouter une condition, puis sélectionnez Variable de séquence de tâches.

  3. Dans la boîte de dialogue Variable de séquence de tâches, spécifiez les paramètres suivants :

    • Variable : nom de la variable. Par exemple : _SMSTSInWinPE.

    • Condition : condition permettant d’évaluer la valeur de la variable. Les conditions suivantes sont disponibles :

      • Exists
      • N’existe pas
      • Égal à
      • N’est pas égal à
      • Supérieur à
      • Supérieur ou égal à
      • Inférieur à
      • Inférieur ou égal à
      • Like (prend en charge les caractères génériques de * et ?)
      • Pas comme (version 2103 ou ultérieure)
    • Valeur : valeur de la variable à vérifier. Par exemple : false.

Les trois exemples ci-dessus constituent une condition courante pour tester si la séquence de tâches s’exécute à partir d’une image de démarrage dans Windows PE :

Variable de séquence de tâches_SMSTSInWinPE equals "false"

Consultez cette condition dans le groupe Fichiers et paramètres de capture du modèle de séquence de tâches par défaut pour installer une image de système d’exploitation existante.

Pour plus d’informations sur les conditions, consultez Éditeur de séquence de tâches - Conditions.

Script personnalisé

Lisez et écrivez des variables à l’aide du Microsoft.SMS. Objet COM TSEnvironment pendant l’exécution de la séquence de tâches.

L’exemple de Windows PowerShell suivant interroge la variable _SMSTSLogPath pour obtenir l’emplacement actuel du journal. Le script définit également une variable personnalisée.

# 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"

Fichier de réponses de l’installation de Windows

Le fichier de réponses d’installation de Windows que vous fournissez peut avoir des variables de séquence de tâches incorporées. Utilisez la forme %varname%, où varname est le nom de la variable. L’étape Configurer Windows et ConfigMgr remplace la chaîne de nom de variable pour la valeur de variable réelle. Ces variables de séquence de tâches incorporées ne peuvent pas être utilisées dans des champs numériques uniquement dans un fichier de réponses unattend.xml.

Pour plus d’informations, consultez Configurer Windows et ConfigMgr.

Voir aussi