Les variables
Introduction
Windows PowerShell offre, comme tous les autres langages de programmation, la possibilité de créer des variables. La notion de variable est ce qui confère à un langage particulier une certaine souplesse. Aussi bien en mode console qu’en mode scripting, le recours à l’utilisation de variables dans un algorithme donné est un fait tout à fait répandu.
Donc, à la notion de variable comme principe fondamental participant à l’existence d’un langage de programmation, il faut souligner l’aspect pluriel que ce principe peut revêtir. Ce chapitre a pour objectif de se familiariser avec la notion de variable et d’en esquisser les différents types : les variables automatiques, les variables de préférence ainsi que les variables d’environnement.
Comprendre la notion de variable
PowerShell est extrêmement souple en matière de définition de variables, c’est-à-dire que plusieurs types de valeurs peuvent être assignés à une variable particulière ; c’est d’ailleurs un avantage majeur de Windows PowerShell par rapport à d’autres langages.
Plus précisément, une variable pointe vers une adresse mémoire où se trouve son contenu. En PowerShell, une variable doit commencer par le symbole $.
Syntaxe d’une variable
$<Nom_Variable> (1) = <Valeur_Variable> (2)
Le nom d’une variable (1) est constitué des caractères A à Z et 0 à 9 et le symbole _ est aussi autorisé. Quant aux caractères spéciaux, ils peuvent aussi être inclus, mais leur utilisation n’est pas recommandée. La valeur d’une variable (2) est unique ou composite. En outre, il peut s’agir d’un même type ou de types différents.
NOTE Le nom des variables
En PowerShell, le nom des variables n’est pas sensible à la casse.
Les exemples qui suivent sont de simples valeurs scalaires :
PS> $name = "PSX"
PS> $name
PSX
PS> $num = 17
PS> $num
17
PS> $path = "C:\devel\scripts"
PS> $path
C:\devel\scripts
Et ceux-ci contiennent le résultat de commandes :
PS> $date = Get-Date
PS> $date
jeudi 2 novembre 2014 09:50:53
PS> $alias = Get-Alias
PS> $alias
CommandType Name Definition
----------- ---- ----------
Alias % ForEach-Object
Alias ? Where-Object
Alias ac Add-Content
Alias asnp Add-PSSnapIn
Alias cat Get-Content
Alias cd Set-Location
Alias chdir Set-Location
Alias clc ...
Les variables automatiques
Windows PowerShell, au cours de son propre fonctionnement, définit un certain nombre de variables que l’on nomme « variables automatiques ». Les variables automatiques contiennent des informations d’état concernant PowerShell et comme un environnement de ce type change systématiquement, le contenu de ces variables change « automatiquement » de manière logique. Les variables automatiques ont donc une fonction bien précise et les connaître est un avantage pour l’utilisateur.
$$
Contient le dernier jeton de la dernière ligne de commande au cours d’une session Windows PowerShell.
$ˆ
Contient le premier jeton de la dernière ligne de commande au cours d’une session Windows PowerShell.
$?
Contient l’état d’exécution de la dernière opération. La valeur est true si l’opération s’est bien déroulée, et false si celle-ci s’est mal déroulée.
$_
Il s’agit de l’objet actif traité par le pipeline.
$Args
Il s’agit d’une variable tableau contenant une liste de paramètres utilisables par les fonctions, les scripts et les blocs de script.
$LastExitCode
Indique la valeur de sortie de la dernière ligne de commande (si celle-ci utilise une commande native Windows).
$Error
Cette variable contient une liste...
Les variables de préférence
PowerShell est un environnement d’exécution riche, et à ce titre il propose une souplesse dans la définition de certaines configurations. Ces configurations (ou préférences) sont accessibles aux utilisateurs. Du comportement des commandes à la gestion des erreurs, les utilisateurs disposent d’une grande marge de manœuvre pour configurer le comportement de Windows PowerShell, et cela est en partie possible grâce à l’existence des variables de préférence, dont voici les plus fréquemment utilisées.
$ConfirmPreference
Détermine la façon dont Windows PowerShell va demander ou non confirmation avant qu’une commande soit exécutée.
$ErrorActionPreference
Détermine le comportement de Windows PowerShell face aux erreurs ne nécessitant pas l’arrêt de son exécution.
$DebugPreference
Détermine le comportement de Windows PowerShell face aux messages de débogage.
$VerbosePreference
Détermine le comportement de Windows PowerShell face aux messages détaillés.
$WarningPreference
Détermine le comportement de Windows PowerShell face aux messages d’avertissement.
$WhatifPreference
Détermine si le paramètre -Whatif est activé.
$PSEmailServer
Indique le serveur de messagerie par défaut servant à l’envoi...
Les variables d’environnement
Une autre catégorie de variables est celle des variables d’environnement, catégorie plus connue car on la retrouve dans de multiples contextes. Les variables d’environnement contiennent des informations liées au système d’exploitation (nombre de processeurs, type des processeurs, chemin de répertoires importants, chemin d’accès aux exécutables, etc.). Elles sont utilisées par de très nombreux programmes dont Windows PowerShell.
Windows PowerShell autorise l’accès aux variables d’environnement, mais permet aussi leur changement, même si celui-ci n’est pas permanent par défaut. Pour y accéder, un fournisseur (nous étudierons ce concept dans le prochain chapitre) existe :
PS> Get-ChildItem env:
Name Value
---- -----
ALLUSERSPROFILE C:\ProgramData
APPDATA C:\Users\Kais\AppData\Roaming
asl.log Destination=file
CommonProgramFiles ...