about_Variables

Description courte

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 (par exemple$a, ou $my_var$process.$

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 $PSHOME variable 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 $MaximumHistoryCount variable 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 des 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 $MyVariable variable, 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 Clear-Variable de commande ou remplacez la valeur $nullpar .

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

Il est également possible d’affecter des valeurs à plusieurs variables avec une seule instruction. Les exemples suivants attribuent la même valeur à plusieurs variables :

$a = $b = $c = 0

L’exemple suivant affecte plusieurs valeurs à plusieurs variables.

$i,$j,$k = 10, "red", $true    # $i is 10, $j is "red", $k is True
$i,$j = 10, "red", $true       # $i is 10, $j is [object[]], Length 2

Pour plus d’informations, consultez la section Affectation de plusieurs variables de about_Assignment_Operators.

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 $number variable qui peut contenir uniquement des entiers, une $words variable qui ne peut contenir que des chaînes et une $dates variable qui ne peut contenir que des 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 $PROFILE variable, qui est le chemin d’accès au fichier de profil utilisateur PowerShell dans la console PowerShell.

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

Dans cet exemple, deux commandes 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 marques entre 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, Lo ou Nd.
  • Caractère de trait de soulignement (_).
  • Point d’interrogation (?) caractère.

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

  • Lu - UppercaseLetter
  • Ll - LowercaseLetter
  • Lt - TitlecaseLetter
  • Lm - ModificateurLetter
  • Lo - OtherLetter
  • Nd - DecimalDigitNumber

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 :
    • Caractère de accolades fermante (}) (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 about_Automatic_Variables.

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 caractère spécial de trait d’union (-).

${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 un type nommé this{value}is variable :

${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"

Pour tout script ou commande qui s’exécute hors session, vous avez besoin du Using modificateur d’étendue pour incorporer des valeurs de variable à partir de l’étendue de session appelante, afin que le code hors session puisse y accéder.

Pour plus d’informations, consultez about_Remote_Variables.

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 $VerbosePreference variable dans chaque session PowerShell, ajoutez la commande suivante à votre profil PowerShell.

$VerbosePreference = "Continue"

Vous pouvez ajouter cette commande à votre profil PowerShell en ouvrant le $PROFILE fichier 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 Variable: lecteur qui ressemble à un lecteur de système de fichiers, mais contient les variables de votre session et leurs valeurs.

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

Set-Location Variable:

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

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 $PSCulture variable automatique, utilisez la commande suivante.

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

Pour afficher plus d’informations sur le Variable: lecteur 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 Description
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