Partager via


À propos des variables

Description courte

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

Description longue

Vous pouvez stocker tous les types de valeurs dans des variables PowerShell. Par exemple, stockez les résultats des commandes et stockez les éléments utilisés dans les commandes et 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 qui commencent par un signe dollar ($), telles que $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 existent uniquement 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, de script ou locale.

  • Variables automatiques : les variables automatiques stockent l’état de PowerShell. Ces variables sont créées par PowerShell et PowerShell modifie 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 avec des 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 des sessions.

    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 s’affichent sans le signe dollar précédent ($) utilisé pour référencer les 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 de Clear-Variable commande 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 les entiers, les chaînes, les tableaux et les 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 peu 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 spécifiques ou des objets 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 cast, entrez un nom de type, placé entre crochets, avant le nom de la variable (à gauche de l’instruction d’affectation). L’exemple suivant crée une $number variable qui ne peut contenir que 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 des commandes et des 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 des 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\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

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

notepad $PROFILE

notepad "$PROFILE"

Les exemples suivants utilisent des marques à guillemet unique (') qui traitent la variable comme du 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 les caractères suivants :

  • Caractères Unicode de ces catégories : Lu, Ll, Lt, Lm, Lo ou Nd.
  • Caractère de soulignement (_).
  • Caractère de point d’interrogation (?).

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

  • Lu - MajusculeLetter
  • Ll - MinusculeLetter
  • Lt - TitlecaseLetter
  • Lm - ModifierLetter
  • Lo - OtherLetter
  • Nd - DecimalDigitNumber

Pour créer ou afficher un nom de variable qui inclut des espaces ou des caractères spéciaux, placez le nom de la variable avec les accolades ({}) caractères. Les accolades dirigent PowerShell pour interpréter les caractères du nom de la variable comme des littéraux.

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

  • Tout caractère Unicode, avec les exceptions suivantes :
    • Caractère fermant accolade (}) (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 comprend 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 des 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-source 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 $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 et agit comme un lecteur de système de fichiers, mais il 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 Get-Item commande 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 $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 de fournisseur

Vous pouvez préfixer un chemin d’accès de 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 variables

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

Pour répertorier les applets de commande, tapez :

Get-Command -Noun Variable

Pour obtenir de l’aide sur 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

about_Automatic_Variables

about_Environment_Variables

about_Preference_Variables

about_Profiles

about_Quoting_Rules

about_Scopes