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.