Partager via


À propos des variables

Brève description

Décrit comment les variables stockent les valeurs qui peuvent être utilisées dans PowerShell.

Description longue

Vous pouvez stocker tous les types de valeurs dans les variables PowerShell. Par exemple, stockez les résultats des commandes et stockez les éléments utilisés dans les commandes et les expressions, tels que les noms, les chemins d’accès, les paramètres et les valeurs.

Une variable est une unité de mémoire dans laquelle les valeurs sont stockées. Dans PowerShell, les variables sont représentées par des chaînes de texte commençant par un signe dollar ($), comme $a, $processou $my_var.

Les noms de variables ne respectent pas la casse et peuvent inclure des espaces et des caractères spéciaux. Toutefois, les noms de variables qui incluent des caractères spéciaux et des espaces sont difficiles à utiliser et doivent être évités. Pour plus d’informations, consultez noms de variables qui incluent des caractères spéciaux.

Il existe plusieurs types de variables dans PowerShell.

  • Variables créées par l’utilisateur : les variables créées par l’utilisateur sont créées et gérées par l’utilisateur. Par défaut, les variables que vous créez sur la ligne de commande PowerShell n’existent que lorsque la fenêtre PowerShell est ouverte. Lorsque les fenêtres PowerShell sont fermées, les variables sont supprimées. Pour enregistrer une variable, ajoutez-la à votre profil PowerShell. Vous pouvez également créer des variables dans des scripts avec une étendue globale, un script ou une étendue locale.

  • Variables automatiques : les variables automatiques stockent l’état de PowerShell. Ces variables sont créées par PowerShell et PowerShell modifient leurs valeurs selon les besoins pour maintenir leur précision. Les utilisateurs ne peuvent pas modifier la valeur de ces variables. Par exemple, la variable $PSHOME stocke le chemin d’accès au répertoire d’installation de PowerShell.

    Pour plus d’informations, une liste et une description des variables automatiques, consultez about_Automatic_Variables.

  • Variables de préférence : les variables de préférence stockent les préférences utilisateur pour PowerShell. Ces variables sont créées par PowerShell et sont remplies de valeurs par défaut. Les utilisateurs peuvent modifier les valeurs de ces variables. Par exemple, la variable $MaximumHistoryCount détermine le nombre maximal d’entrées dans l’historique de session.

    Pour plus d’informations, une liste et une description des variables de préférence, consultez about_Preference_Variables.

Utilisation de variables

Pour créer une variable, utilisez une instruction d’affectation pour affecter une valeur à la variable. Vous n’avez pas besoin de déclarer la variable avant de l’utiliser. La valeur par défaut de toutes les variables est $null.

Pour obtenir la liste de toutes les variables de votre session PowerShell, tapez Get-Variable. Les noms de variables sont affichés sans le signe dollar précédent ($) utilisé pour référencer des variables.

Par exemple:

$MyVariable = 1, 2, 3

$Path = "C:\Windows\System32"

Les variables sont utiles pour stocker les résultats des commandes.

Par exemple:

$Processes = Get-Process

$Today = (Get-Date).DateTime

Pour afficher la valeur d’une variable, tapez le nom de la variable, précédé d’un signe dollar ($).

Par exemple:

$MyVariable
1
2
3
$Today
Tuesday, September 3, 2019 09:46:46

Pour modifier la valeur d’une variable, affectez une nouvelle valeur à la variable.

Les exemples suivants affichent la valeur de la variable $MyVariable, modifient la valeur de la variable, puis affichent la nouvelle valeur.

$MyVariable = 1, 2, 3
$MyVariable
1
2
3
$MyVariable = "The green cat."
$MyVariable
The green cat.

Pour supprimer la valeur d’une variable, utilisez l’applet de commande Clear-Variable ou remplacez la valeur par $null.

Clear-Variable -Name MyVariable
$MyVariable = $null

Pour supprimer la variable, utilisez Remove-Variable ou Remove-Item.

Remove-Variable -Name MyVariable
Remove-Item -Path Variable:\MyVariable

Types de variable

Vous pouvez stocker n’importe quel type d’objet dans une variable, y compris des entiers, des chaînes, des tableaux et des tables de hachage. Et, les objets qui représentent des processus, des services, des journaux d’événements et des ordinateurs.

Les variables PowerShell sont faiblement typées, ce qui signifie qu’elles ne sont pas limitées à un type particulier d’objet. Une variable unique peut même contenir une collection, ou un tableau, de différents types d’objets en même temps.

Le type de données d’une variable est déterminé par les types .NET des valeurs de la variable. Pour afficher le type d’objet d’une variable, utilisez Get-Member .

Par exemple:

$a = 12                         # System.Int32
$a = "Word"                     # System.String
$a = 12, "Word"                 # array of System.Int32, System.String
$a = Get-ChildItem C:\Windows   # FileInfo and DirectoryInfo types

Vous pouvez utiliser un attribut de type et une notation de cast pour vous assurer qu’une variable ne peut contenir que des types d’objets ou des objets spécifiques qui peuvent être convertis en ce type. Si vous essayez d’affecter une valeur d’un autre type, PowerShell tente de convertir la valeur en son type. Si le type ne peut pas être converti, l’instruction d’affectation échoue.

Pour utiliser la notation de cast, entrez un nom de type entre crochets, avant le nom de la variable (à gauche de l’instruction d’affectation). L’exemple suivant crée une variable $number qui peut contenir uniquement des entiers, une variable $words qui ne peut contenir que des chaînes et une variable $dates qui ne peut contenir que objets DateTime.

[int]$number = 8
$number = "12345"  # The string is converted to an integer.
$number = "Hello"
Cannot convert value "Hello" to type "System.Int32". Error: "Input string was
 not in a correct format."
At line:1 char:1
+ $number = "Hello"
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo          : MetadataError: (:) [],
    ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
[string]$words = "Hello"
$words = 2       # The integer is converted to a string.
$words += 10     # The plus (+) sign concatenates the strings.
$words
210
[datetime] $dates = "09/12/91"  # The string is converted to a DateTime object.
$dates
Thursday, September 12, 1991 00:00:00
$dates = 10    # The integer is converted to a DateTime object.
$dates
Monday, January 1, 0001 00:00:00

Utilisation de variables dans les commandes et les expressions

Pour utiliser une variable dans une commande ou une expression, tapez le nom de la variable, précédé du signe dollar ($).

Si le nom de la variable et le signe dollar ne sont pas placés entre guillemets ou s’ils sont placés entre guillemets doubles ("), la valeur de la variable est utilisée dans la commande ou l’expression.

Si le nom de la variable et le signe dollar sont placés entre guillemets simples ('), le nom de la variable est utilisé dans l’expression.

Pour plus d’informations sur l’utilisation de guillemets dans PowerShell, consultez about_Quoting_Rules.

Cet exemple obtient la valeur de la variable $PROFILE, qui est le chemin d’accès au fichier de profil utilisateur PowerShell dans la console PowerShell.

$PROFILE
C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Dans cet exemple, deux commandes sont affichées qui peuvent ouvrir le profil PowerShell dans notepad.exe. L’exemple avec des guillemets doubles (") utilise la valeur de la variable.

notepad $PROFILE

notepad "$PROFILE"

Les exemples suivants utilisent des guillemets simples (') qui traitent la variable en tant que texte littéral.

'$PROFILE'
$PROFILE
'Use the $PROFILE variable.'
Use the $PROFILE variable.

Noms de variables qui incluent des caractères spéciaux

Les noms de variables commencent par un signe dollar ($) et peuvent inclure des caractères alphanumériques et des caractères spéciaux. La longueur du nom de variable est limitée uniquement par la mémoire disponible.

La meilleure pratique est que les noms de variables incluent uniquement des caractères alphanumériques et le caractère de soulignement (_). Les noms de variables qui incluent des espaces et d’autres caractères spéciaux, sont difficiles à utiliser et doivent être évités.

Les noms de variables alphanumériques peuvent contenir ces caractères :

  • Caractères Unicode de ces catégories : Lu, Ll, Lt, Lm, Loou Nd.
  • Trait de soulignement (_) caractère.
  • Point d’interrogation (?) caractère.

La liste suivante contient les descriptions des catégories Unicode. Pour plus d’informations, consultez UnicodeCategory .

  • Lu - Lettre majuscule
  • Ll - MinusculeLettre
  • Lt - TitlecaseLettre
  • Lm - ModifierLettre
  • Lo - OtherLetter
  • nd - NuméroChiffredécimal

Pour créer ou afficher un nom de variable incluant des espaces ou des caractères spéciaux, placez le nom de la variable avec les accolades ({}) caractères. L’accolades dirige PowerShell pour interpréter les caractères du nom de la variable en tant que littéraux.

Les noms de variables de caractères spéciaux peuvent contenir ces caractères :

  • Tout caractère Unicode, avec les exceptions suivantes :
    • Accolade fermante (}) caractère (U+007D).
    • Caractère backtick (`) (U+0060). Le backtick est utilisé pour échapper des caractères Unicode afin qu’ils soient traités comme des littéraux.

PowerShell a des variables réservées telles que $$, $?, $^et $_ qui contiennent des caractères alphanumériques et spéciaux. Pour plus d’informations, consultez à propos des variables automatiques.

Par exemple, la commande suivante crée la variable nommée save-items. Les accolades ({}) sont nécessaires, car le nom de la variable inclut un trait d’union (-) caractère spécial.

${save-items} = "a", "b", "c"
${save-items}
a
b
c

La commande suivante obtient les éléments enfants dans le répertoire représenté par la variable d’environnement ProgramFiles(x86).

Get-ChildItem ${env:ProgramFiles(x86)}

Pour référencer un nom de variable qui inclut des accolades, placez le nom de la variable dans les accolades et utilisez le caractère backtick pour échapper aux accolades. Par exemple, pour créer une variable nommée this{value}is type :

${this`{value`}is} = "This variable name uses braces and backticks."
${this`{value`}is}
This variable name uses braces and backticks.

Variables et étendue

Par défaut, les variables sont disponibles uniquement dans l’étendue dans laquelle elles sont créées.

Par exemple, une variable que vous créez dans une fonction est disponible uniquement dans la fonction. Une variable que vous créez dans un script est disponible uniquement dans le script. Si vous dot-sourcez le script, la variable est ajoutée à l’étendue actuelle. Pour plus d’informations, consultez about_Scopes.

Vous pouvez utiliser un modificateur d’étendue pour modifier l’étendue par défaut de la variable. L’expression suivante crée une variable nommée Computers. La variable a une étendue globale, même lorsqu’elle est créée dans un script ou une fonction.

$Global:Computers = "Server01"

Enregistrement des variables

Les variables que vous créez sont disponibles uniquement dans la session dans laquelle vous les créez. Ils sont perdus lorsque vous fermez votre session.

Pour créer la variable dans chaque session PowerShell que vous démarrez, ajoutez la variable à votre profil PowerShell.

Par exemple, pour modifier la valeur de la variable $VerbosePreference dans chaque session PowerShell, ajoutez la commande suivante à votre profil PowerShell.

$VerbosePreference = "Continue"

Vous pouvez ajouter cette commande à votre profil PowerShell en ouvrant le fichier $PROFILE dans un éditeur de texte, tel que notepad.exe. Pour plus d’informations sur les profils PowerShell, consultez about_Profiles.

Variable : lecteur

Le fournisseur de variables PowerShell crée un lecteur Variable: qui ressemble à un lecteur de système de fichiers, mais contient les variables de votre session et leurs valeurs.

Pour passer au lecteur Variable:, utilisez la commande suivante :

Set-Location Variable:

Pour répertorier les éléments et variables dans le lecteur Variable:, utilisez les applets de commande Get-Item ou Get-ChildItem.

Get-ChildItem Variable:

Pour obtenir la valeur d’une variable particulière, utilisez la notation du système de fichiers pour spécifier le nom du lecteur et le nom de la variable. Par exemple, pour obtenir la variable automatique $PSCulture, utilisez la commande suivante.

Get-Item Variable:\PSCulture
Name                           Value
----                           -----
PSCulture                      en-US

Pour afficher plus d’informations sur le lecteur Variable: et le fournisseur de variables PowerShell, tapez :

Get-Help Variable

Syntaxe de variable avec chemins d’accès du fournisseur

Vous pouvez préfixer un chemin d’accès du fournisseur avec le signe dollar ($) et accéder au contenu de n’importe quel fournisseur qui implémente l’interface IContentCmdletProvider.

Les fournisseurs PowerShell intégrés suivants prennent en charge cette notation :

Applets de commande de variable

PowerShell inclut un ensemble d’applets de commande conçues pour gérer des variables.

Pour répertorier les applets de commande, tapez :

Get-Command -Noun Variable

Pour obtenir de l’aide pour une applet de commande spécifique, tapez :

Get-Help <cmdlet-name>
Nom de l’applet de commande Descriptif
Clear-Variable Supprime la valeur d’une variable.
Get-Variable Obtient les variables dans la console active.
New-Variable Crée une variable.
Remove-Variable Supprime une variable et sa valeur.
Set-Variable Modifie la valeur d’une variable.

Voir aussi

about_Automatic_Variables

about_Environment_Variables

about_Preference_Variables

about_Profiles

à_propos_des_règles_de_citation

about_Scopes