Table des matières

, , ,

PowerShell : Les tableaux

Les tableaux (Array) sont des variables permettant de stocker des valeurs de même type.

Créer une variable tableau

# Le type tableau est déterminé lors de l'affectation
# Les éléments sont séparés par la virgule
$computers = "NODE-ADC1","NODE-2F03","NODE-AA4E"
$numbers = 33,806,10
 
# Un tableau a le type ''System.Array'' cette information
# est retournée par la méthode GetType()
# Créer un tableau d'un seul élément en spécifiant le type
[Array] $users = "john.doe"
 
# Créer un tableau vide
$devices = @()
 
# Ajouter des éléments
$devices += "mouse"
 
$devices.Length
1
 
$devices+="keyboard"
 
$devices.Length
2

Accéder aux valeurs

Le nom de la variable tableau retourne l'ensemble des éléments. Pour accéder à un élément du tableau on précise son index entre crochets. L'index (position de l'élément dans le tableau) commence à 0 :

# Accès au premier élément
$devices[0]
 
# Accès au deuxième élément
$devices[1]

Si on redirige les éléments d'un tableau vers l'applet Get-Member l'applet affiche les attributs et méthodes de chaque type d'élément présent dans le tableau. Pour afficher les attributs du tableau lui même il faudra utiliser l'option -InputObject :

# lister les types d'éléments présents dans le tableau
$devices | Get-Member
 
# Lister les attributs et méthode du type tableau lui-même
Get-Member -InputObject $devices

Limitations des tableaux

Les tableaux créés par défaut dans PowerShell sont de taille fixe. Lorsqu'on ajoute un élément, le tableau est donc recréé. Pour des tableaux de petite taille cela n'est pas un problème. Cependant si les traitements effectués avec le tableau comprennent des milliers d'éléments ajoutés un par un cela aura un impact négatif sur les performances. Autre limitation, il n'existe pas de méthode simple permettant de supprimer un élément d'un tableau de taille fixe.

Listes

Pour palier aux limitations des tableaux de taille fixe, il existe le type liste tableau (ArrayList).

# Création d'une liste vide
$computers=New-Object System.Collections.ArrayList
 
# Création d'une liste par affectation
[System.Collections.ArrayList] $computers = "LON-DC1","LON-SVR1","LON-CL1"
 
# Ajout d'un élément à la liste
$computers.Add("LON-SRV2")
 
# Suppression d'un élément à la liste
$computers.Remove("LON-CL1")