Variables & tableaux
Les variables et les tableaux sont essentiels en PowerShell, car ils permettent de stocker, organiser et manipuler efficacement les données utilisées dans un script.
Objectifs
À la fin de ce chapitre, vous serez capable de :
- Déclarer et manipuler des variables PowerShell (types, substitution, variables automatiques).
- Utiliser des chaînes (simples/doubles), here-strings et caractères d’échappement.
- Créer et parcourir des tableaux/collections selon le besoin.
Les variables
- Une variable commence toujours par un
$. - Le type est défini lors de chaque affectation, car le langage est non typé.
- On peut définir le type en ajoutant l'information devant la variable.
[string]$texte = "Bonjour"
[int]$nombre = 123
[double]$prix = 19.95
[bool]$actif = $true
[char]$lettre = 'A'
[array]$tableau = @("rouge", "vert", "bleu")
[datetime]$date = Get-DateChaîne de caractères
Une variable peut être utilisée pour son nom ou pour son contenu :
$a='Hello'
$b="World"
Write-Host '$a $b'
Write-Host "$a $b"Il y a substitution avec des guillemets double :

La substitution de la propriété d'un objet se fait avec $($objet.propriété) :

Here-String
Chaîne de caractères sur plusieurs lignes, qui peut être contenue entre des guillemets simples ou doubles.
Avec guillemets doubles :
$texte = @"
Bonjour,
Ceci est une chaîne
sur $number lignes.
"@Avec guillemets simples :
$texte = @'
Bonjour,
Ceci est une chaîne
sur 3 lignes.
'@Noté
Différence importante :
@" ... "@: les variables sont interprétées@' ... '@: le texte est pris tel quel
Caractères d'échappement
Le backtick ` ou guillemet inversé, correspond au \ du language C.
Utilisé en fin de ligne indique que la commande continue sur la ligne suivante
Si l'on veut que la variable
$ane soit pas substituée, alors on utilise`$a
Le tableau ci-dessous indique les principaux caractères d'échappement :
| Caractères d’échappement | Résultat |
|---|---|
`n | Nouvelle ligne |
`r | Retour chariot |
`t | Tabulation |
`a | Alarm |
`b | Backspace |
`' | Guillemet simple |
`" | Guillemet double |
`0 | Null |
` | Backtick |
On trouve le type d'une variable avec Get-Member ou GetType :
$a | Get-Member
$a.GetType()
Get-Member -InputObject $aVariables spéciales
Variables qui stockent des informations d'état "Automatic Variables" :
| Variable | Description |
|---|---|
$_ | contenu du pipe, utilisé avec Where-Object, Foreach-Object, Filter, ... |
$? | booléen sur le résultat de la dernière opération (Modifié par la dernière fonction avec exit0 : ok, exit1 : erreur ou exception : erreur bloquante pour l’exécution) |
$Args | tableau des arguments passés à une fonction ou un script |
$Error | tableau des erreurs, la dernière erreur sera donc $Error[0] et l'avant dernière $Error[1], pour effacer $Error.Clear |
$Home | Répertoire de l'utilisateur |
$Host | Informations sur l'hôte |
$PWD | Chemin absolu du répertoire courant |
Constantes
C'est une variable avec une valeur définie que l'on ne peut pas changer

Opérateurs
- Arithmétiques :
+,-,*,/,%,System.Math

Comparaison ne respectant pas la casse :
-eq,-ne,-gt,-ge,-lt,-leComparaison respectant la casse :
-ceq,-cne,-cgt,-cge,-clt,-cle
- Logiques :
-and,-or,-not,!,-xor

- Binaires :
-band,-bor,-bnot,-bxor
- Redirection :
>,>>,2>&1,2>,2>>
Le fichier redirection.txt contient le texte :
Le fichier error.txt contient le message d'erreur :
- Types :
-is,-isnot

- Affectation :
+=,-=,*=,/=,%=,++,--
- Regex :
-match,-notmatch

- Sur les chaînes de caractères :
-replace,-split,-join,-like,-notlike

Tableaux à une dimension
Déclaration d'un tableau vide :
$tabVide=@()Déclaration avec initialisation :
$tab1=10,20,30,40,50
$tab2=1..10
$tab3=@(1,2,3,4)Déclaration avec type forcé :
[int[]]$tab9=9,99,999
[double[]]$tab5=@()Accès à une valeur par sont index :
$tab1[2]Accès à plusieurs valeurs :
$tab9[0..2]Affiche :
Affiche le tableau
$tab3Affiche :
On peut aussi parcourir le tableau avec une boucle foreach ou for
Affiche la dernière valeur :
$tab3[-1]Ajout de valeur :
$tab3+=5Modification par changement de valeur :
$tab3[0]=8Suppression par réaffectation :
$tab3=$tab3[0..2+4]Affiche :
Obtenir la longueur du tableau :
$tab1.Length
$tab1.CountConcaténation
Différence pour caractères et string :

Tableau à plusieurs dimensions
Déclaration avec initialisation :
$tab11= (11,12,13),(21,22,23)Accès à une ligne :
$tab11[0]Affiche : 11 12 13
Accès aux lignes :

Accès à une case :
$tab11[0][1]Affiche : 12
Tableaux associatifs
Initialiser un tableau vide :
$tabAssoVide={}WARNING
Attention : un tableau @() utilise des () alors que un tableau associatif @{} des {}.
Dans un tableau associatif l'indice est une clé :
$age=@{Toto=15; Titi=17; Tutu=14}L'affichage utilise les propriétés des tableaux associatifs :

Les propriétés Keys et Values permettent d'avoir la liste des noms ou des valeurs.
Accéder à la valeur associée d'une clé :
$age['Tutu']Affiche : 14
Pour ajouter une clé/valeur à un tableau :
$age+=@{Tata=16}Résumé
- Les variables commencent par $ et peuvent être typées explicitement.
- Les chaînes gèrent la substitution et les here-strings facilitent le multi-lignes.
- Les tableaux et variables automatiques sont essentiels pour traiter des données en script.
