Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. PowerShell Core et Windows PowerShell
  3. Tableaux
Extrait - PowerShell Core et Windows PowerShell Les fondamentaux du langage (2e édition)
Extraits du livre
PowerShell Core et Windows PowerShell Les fondamentaux du langage (2e édition)
7 avis
Revenir à la page d'achat du livre

Tableaux

Introduction

La manipulation des tableaux en PowerShell est une notion essentielle à maîtriser. Outre le fait que leur utilisation soit aisée, il faut savoir que dès lors que le résultat d’une commande retourne plusieurs objets, PowerShell renvoie un tableau d’objets. Nous allons voir dans ce chapitre qu’il existe différents types de tableaux et que ces derniers sont capables de contenir des éléments de types distincts si nécessaire. 

Tableaux à une dimension

Le tableau à une dimension est le cas le plus simple, les valeurs sont mises les unes après les autres, et il suffit d’indiquer un numéro d’indice (ou index) pour accéder au contenu. Un tableau à une dimension est parfois appelé liste ou collection.

images/Fig22.PNG

Par exemple ici :

La valeur 18 est contenue dans le tableau à l’indice 0.

La valeur 22 est contenue dans le tableau à l’indice 1.

Les indices de tableau commencent à 0 et non pas à 1 comme avec d’autres langages. 

1. Initialiser un tableau vide

Il y a mille et une façon de procéder pour déclarer un tableau, mais dans sa plus simple expression, la déclaration d’un tableau vide peut se faire de la manière suivante :


$monTableau = @()
 

La variable $monTableau est à présent un tableau vide non typé. C’est-à-dire que celui-ci pourra contenir tout type d’objet.

Contraindre le type d’un tableau

Il est possible de contraindre le type de données que pourra contenir un tableau. Pour ce faire, il suffit de spécifier le type entre crochets devant le nom du tableau lors de sa définition.

Par exemple :


[Int[]]$monTableau1 = @() 
[String[]]$monTableau2 = @() 
[Double[]]$monTableau3 = @()
 

Attention de ne pas oublier de mettre une paire de crochets vides après le type, comme Int[]. Si vous ne le faites pas, PowerShell émettra une erreur indiquant qu’il ne peut convertir un tableau en une valeur entière. En effet un type [Int] simple (sans la paire de crochets vide en suffixe) indique un objet de type entier et non un tableau d’entiers.

Bonne pratique !

Une bonne pratique lorsque l’on connaît à l’avance (ce qui est généralement le cas) le type des données que doit contenir un tableau est de systématiquement contraindre les tableaux, mais aussi les variables. De cette manière, une erreur sera vite détectée, nous évitant ainsi de longues séances de débogage.

Exemple : Tentative d’affectation d’une valeur non admise par un tableau contraint


PS > $monTableau1[0] = 'Bonjour' 
 
Cannot convert value "Bonjour" to type "System.Int32". Error: "Input 
string was not in a correct format." ...

Tableaux à plusieurs dimensions

Lorsque l’on parle de tableaux à plusieurs dimensions, on parle de tableaux à plusieurs index, avec autant d’index que de dimensions. Ainsi, pour passer d’un tableau à une dimension à un tableau à deux dimensions, il suffit d’ajouter un indice permettant de se repérer dans cette nouvelle dimension.

images/Fig23.PNG

La lecture des tableaux à plusieurs dimensions est semblable à ceux à une dimension. La seule contrainte est de jouer avec les indices. Prenons le cas du tableau ci-dessus.

La lecture du tableau avec l’indice 0 nous retournera le premier élément du tableau (ici un autre tableau) :


PS > $tab[0] 
1 
2 
3
 

Pour obtenir une valeur précise, nous devons tout simplement fixer l’indice de la dimension horizontale et celui de la dimension verticale.


PS > $tab[0][2] 
3
 

Un tableau à plusieurs dimensions est la plupart du temps un tableau de tableaux. Autrement dit, il s’agit d’un tableau contenant d’autres tableaux. C’est ce que nous allons voir dans l’exemple ci-après.

Soit la définition du tableau suivant :


PS > $taboo = @(10..13),@('Bonjour','Au revoir'),@(1.2,0.3,2.33)
 

Nous avons défini un tableau contenant trois tableaux ; soit respectivement un tableau d’entiers allant des valeurs 10 à...

Tableaux associatifs

1. Tableaux associatifs standards

Un tableau associatif, aussi appelé table de hachage, est un tableau dans lequel chaque valeur n’est pas référencée par un indice mais par une clé. Jusque-là, nous avons vu que dans un tableau, chaque valeur était indexée numériquement. Eh bien dans un tableau associatif, cette notion d’indexation numérique n’existe plus, on utilise des clés en tant qu’identifiants. Par exemple, voici un tableau associatif dans lequel chaque élément (clé) possède une valeur, la valeur étant ici un prix.

Clé

Valeur

Video_projecteur

1600

Television

1400

Console_de_jeux

400

Avec les tableaux associatifs, tout comme les tableaux classiques, vous pouvez utiliser des types de données hétérogènes.

a. Déclarer un tableau associatif vide

La déclaration d’un tableau associatif vide s’effectue ainsi :


$hashtable = @{}
 

b. Initialiser un tableau associatif avec des données

Pour initialiser un tableau associatif contenant des valeurs, la syntaxe suivante est de rigueur :


$hashtable = @{<clé1 = valeur>; <clé2 = valeur>;...}
 

Notez que la création d’un tableau associatif nécessite de placer le symbole arobase @ devant l’accolade ouvrante {, de séparer tous les couples clé/valeur par des points-virgules et de refermer l’ensemble par l’accolade...