Skip to content

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.
powershell
[string]$texte = "Bonjour"
[int]$nombre = 123
[double]$prix = 19.95
[bool]$actif = $true
[char]$lettre = 'A'
[array]$tableau = @("rouge", "vert", "bleu")
[datetime]$date = Get-Date

Chaîne de caractères

Une variable peut être utilisée pour son nom ou pour son contenu :

powershell
$a='Hello'
$b="World"
Write-Host '$a $b' 
Write-Host "$a $b"

Il y a substitution avec des guillemets double :

image

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

image

Here-String

Chaîne de caractères sur plusieurs lignes, qui peut être contenue entre des guillemets simples ou doubles.

Avec guillemets doubles :

powershell
$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 $a ne soit pas substituée, alors on utilise `$a

Le tableau ci-dessous indique les principaux caractères d'échappement :

Caractères d’échappementRésultat
`nNouvelle ligne
`rRetour chariot
`tTabulation
`aAlarm
`bBackspace
`'Guillemet simple
`"Guillemet double
`0Null
`Backtick

On trouve le type d'une variable avec Get-Member ou GetType :

powershell
$a | Get-Member
$a.GetType()
Get-Member -InputObject $a

Variables spéciales

Variables qui stockent des informations d'état "Automatic Variables" :

VariableDescription
$_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)
$Argstableau des arguments passés à une fonction ou un script
$Errortableau des erreurs, la dernière erreur sera donc $Error[0] et l'avant dernière $Error[1], pour effacer $Error.Clear
$HomeRépertoire de l'utilisateur
$HostInformations sur l'hôte
$PWDChemin absolu du répertoire courant

Constantes

C'est une variable avec une valeur définie que l'on ne peut pas changer

image

Opérateurs

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

image

  • Comparaison ne respectant pas la casse : -eq, -ne, -gt, -ge, -lt, -le

  • Comparaison respectant la casse : -ceq, -cne, -cgt, -cge, -clt, -cle

image

  • Logiques : -and, -or, -not, !, -xor

image

  • Binaires : -band, -bor, -bnot, -bxor

image

  • Redirection : >, >>, 2>&1, 2>, 2>>

image

Le fichier redirection.txt contient le texte :

image

Le fichier error.txt contient le message d'erreur :

  • Types : -is, -isnot

image

  • Affectation : +=, -=, *=, /=, %=, ++, --

image

  • Regex : -match, -notmatch

image

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

image

Tableaux à une dimension

Déclaration d'un tableau vide :

powershell
$tabVide=@()

Déclaration avec initialisation :

powershell
$tab1=10,20,30,40,50
$tab2=1..10
$tab3=@(1,2,3,4)

Déclaration avec type forcé :

powershell
[int[]]$tab9=9,99,999
[double[]]$tab5=@()

Accès à une valeur par sont index :

powershell
$tab1[2]

Accès à plusieurs valeurs :

powershell
$tab9[0..2]

Affiche :

image

Affiche le tableau

powershell
$tab3

Affiche :

image

On peut aussi parcourir le tableau avec une boucle foreach ou for

Affiche la dernière valeur :

powershell
$tab3[-1]

Ajout de valeur :

powershell
$tab3+=5

Modification par changement de valeur :

powershell
$tab3[0]=8

Suppression par réaffectation :

powershell
$tab3=$tab3[0..2+4]

Affiche :

image

Obtenir la longueur du tableau :

powershell
$tab1.Length
$tab1.Count

Concaténation

Différence pour caractères et string :

image

Tableau à plusieurs dimensions

Déclaration avec initialisation :

powershell
$tab11= (11,12,13),(21,22,23)

Accès à une ligne :

powershell
$tab11[0]

Affiche : 11 12 13

Accès aux lignes :

image

Accès à une case :

powershell
$tab11[0][1]

Affiche : 12

Tableaux associatifs

Initialiser un tableau vide :

powershell
$tabAssoVide={}

WARNING

Attention : un tableau @() utilise des () alors que un tableau associatif @{} des {}.

Dans un tableau associatif l'indice est une clé :

powershell
$age=@{Toto=15; Titi=17; Tutu=14}

L'affichage utilise les propriétés des tableaux associatifs :

image

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é :

powershell
$age['Tutu']

Affiche : 14

Pour ajouter une clé/valeur à un tableau :

powershell
$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.

Exercices

📥 Exo Variables et Tableaux (PDF)