Tableaux en PowerShell
Qu'est-ce qu'un tableau ?
Les tableaux constituent une structure de données permettant de stocker une collection d'éléments. Ces éléments peuvent être du même type ou de types variés.
Comment créer un tableau
La manière la plus simple de créer un tableau dans PowerShell est de séparer les éléments par des virgules (,
). Par exemple :
$mon_tableau = 25, "Codecademy", 1, $False
Il existe également l'opérateur de sous-expression d'array @( )
, qui permet d'introduire les éléments dans des parenthèses. Voici quelques exemples :
# Tableau avec 3 éléments
$tableau_1 = @($True, 5, (Get-Date).DateTime)
# Tableau vide
$tableau_2 = @()
# Tableau multi-lignes
$tableau_3 = @( "Uno" "Dos" "Tres")
Accéder aux éléments d'un tableau
Les éléments d'un tableau se trouvent à l'aide de leur index, c'est-à-dire leur position. Prenons cet exemple de tableau :
$couleurs = "rouge", "jaune", "noir", "bleu"
Les index commencent à partir de 0. Voici les correspondances :
| Index | Valeur | |-------|---------| | 0 | "rouge"| | 1 | "jaune"| | 2 | "noir" | | 3 | "bleu" |
Pour accéder à l'élément "noir" dans notre tableau $couleurs
:
PS > $couleurs[2]
noir
Modifier des éléments du tableau
Il est possible de modifier les éléments d'un tableau en utilisant leur index. Par exemple, pour changer "jaune" en "marron" :
PS > $couleurs[1] = "marron"
PS > $couleurs
rougerougebrownnoirbleu
Indexation avancée
PowerShell propose diverses méthodes d'indexation :
- Index multiples : en séparant les index par des virgules, on imprime plusieurs éléments.
powershell PS > $couleurs[0,2] rounoird
- Opérateur de plage
..
: permet d'impressionner tous les éléments entre deux index (inclus).powershell PS > $couleurs[1..3] marronnoirbleu
- Plage inversée : utilise l'opérateur de plage en sens inverse pour afficher les éléments dans l'ordre inverse (inclus).
powershell PS > $couleurs[2..1] noirjaunemarron
- Index négatifs : permet d'accéder aux éléments depuis la fin du tableau, où le dernier élément a l'index -1.
powershell PS > $couleurs[-1] bleu
Itération à travers les tableaux
Chaque objet tableau dispose d'une méthode ForEach
, qui permet d'effectuer une action sur chaque élément. La variable $PSItem
ou son alias _
représentent chaque élément du tableau.
PS > $couleurs.ForEach({ $PSItem.Length })
# Affiche les longueurs de chaque chaîne
3 6 5 4
Opérateurs de tableau
- Opérateur d'addition
+
: combine deux tableaux.powershell PS > $fibonacci_1 = 0, 1, 1 PS > $fibonacci_2 = 2, 3, 5 PS > $fibonacci_1 + $fibonacci_2 0 1 1 2 3 5
- Opérateur de multiplication
*
: répète le tableau un certain nombre de fois.powershell PS > $fibonacci_2 * 2 2 3 5 2 3 5
- Opérateurs de contenu : vérifient si un élément est présent dans le tableau, en renvoyant un booléen. Voici quelques exemples :
| Opérateur | Syntaxe | Exemple | |---------------|-----------------------------|----------------------------------| | -contains
| <array> -contains <item>
| $fibonacci -contains 4
renvoie False
. | -notcontains
| <array> -notcontains <item>
| $fibonacci -notcontains 4
renvoie True
. | -in
| <item> -in <array>
| 5 -in $fibonacci
renvoie True
. | -notin
| <item> -notin <array>
| 5 -notin $fibonacci
renvoie False
. | -join
| Combine les éléments d'un tableau en une chaîne. Par exemple :
```powershell
PS > $fibonacci = 0, 1, 1, 2, 3, 5
PS > $fibonacci = $fibonacci -join "->"
PS > $fibonacci
0->1->1->2->3->5
```
Tableaux fortement typés
Il est possible d'appliquer des types sur les tableaux pour forcer chaque élément à respecter un type spécifique.
PS > [String[]]$fruits = "pomme", "banane", "kiwi"
Tableaux d'objets
Les tableaux peuvent également contenir des objets.
$chiens_arr = @( [PSCustomObject]@{Nom = 'Rufus'; Âge = 10} [PSCustomObject]@{Nom = 'Miku'; Âge = 2})
On peut accéder à chaque objet du tableau et à ses propriétés et méthodes individuellement.
PS > $chiens_arr.ForEach({ $PSItem.Nom + " a " + $PSItem.Âge + " ans."})
Rufus a 10 ans.
Miku a 2 ans.