Articles

PowerShell Array guide: Comment utiliser et créer

Les tableaux sont une caractéristique fondamentale de PowerShell. Les tableaux permettent d’ingérer, de manipuler et de sortir de vraies structures de données (et pas seulement des chaînes brutes). Cette fonctionnalité rend PowerShell différent et plus utile que les autres langages de script.

dans cet article, nous allons expliquer ce que sont les tableaux et comment les utiliser dans PowerShell. Nous allons d’abord vous montrer comment créer des tableaux dans PowerShell, puis comment utiliser les fonctions de base pour les manipuler., Ensuite, nous examinerons plusieurs types de tableaux différents et explorerons certaines de leurs caractéristiques les plus subtiles.

obtenez le cours vidéo gratuit PowerShell et Active Directory Essentials

je recommanderais cela pour les utilisateurs PowerShell nouveaux et avancés. Créer un outil publicitaire est une excellente expérience d’apprentissage.

Notre objectif est de vous donner une bonne mise à la terre dans le travail avec les tableaux en PowerShell. Une fois que vous avez maîtrisé ces bases, vous pouvez jeter un oeil à notre cours sur PowerShell pour en savoir plus.,

  • Array Fondamentaux
  • les Tableaux d’Objets
  • les Opérateurs Pour les Tableaux
  • Comment faire pour Ajouter des Valeurs à un Tableau
  • type de Matrice
  • Avancé les Fonctions de Tableau

PowerShell Tableaux

les Tableaux sont une caractéristique commune à presque tous les langages de programmation. Ils sont une structure de données qui sert comme une collection de plusieurs éléments de données. Lorsque vous travaillez avec un tableau, vous pouvez utiliser la même commande pour exécuter la même fonction sur chaque élément d’un tableau, ou accéder et manipuler des éléments individuels à l’aide d’un index.,

Les tableaux dans PowerShell peuvent contenir un ou plusieurs éléments. Un élément peut être une chaîne, un entier, un objet ou même un autre tableau, et un tableau peut contenir n’importe quelle combinaison de ces éléments. Chacun de ces éléments a un index, qui commence toujours (parfois de manière confuse) à 0. Ainsi, le premier élément d’un tableau reçoit l’index 0, le second est indexé comme 1, et ainsi de suite.,

Les tableaux PowerShell sont une partie si fondamentale de PowerShell qu’ils apparaissent dans tous les tutoriels PowerShell, et une bonne connaissance de la façon de travailler avec eux est essentielle pour de nombreux aspects de L’utilisation de PowerShell, de la configuration D’Office 365 à L’utilisation de PowerShell pour le Pentesting.

un Exemple de PowerShell Tableau

la façon La plus simple pour illustrer ce qu’est un tableau est de prendre un exemple. Faisons un tableau qui représente un bol de fruits.,

Il existe plusieurs façons de créer des tableaux dans Powershell, mais le plus simple est d’exécuter cette commande:

@()

cela créera un tableau vide. Un tableau vide n’est pas si utile, cependant, alors ajoutons quelques fruits à notre nouveau tableau. Ceux-ci seront représentés sous forme de chaînes de texte. Pour ce faire, exécutez cette commande

$fruit = @('Apples','Oranges','Bananas')

cela nommera un tableau « fruit” et lui ajoutera trois éléments., De voir que cela a fonctionné, vous pouvez lire le tableau à l’aide de cette commande:

PS /Users/yourname> $fruit

Qui sera de retour:

 Apples Oranges Bananas

Comme vous pouvez le voir, ce tableau est un groupe de morceaux de données. PowerShell les indexera automatiquement comme nous l’avons expliqué ci-dessus:” Apple « sera indexé en tant que 0,” Oranges « en tant que 1 et” Bananas » en tant que 2.

Cet exemple pourrait donner l’impression que les tableaux sont des objets assez simples, et d’une certaine manière ils le sont. Leur simplicité, cependant, est aussi ce qui les rend si flexibles, des objets puissants., Dans le reste de ce guide, nous vous donnerons un avant-goût de ce que vous pouvez faire avec les tableaux.

principes fondamentaux des tableaux

dans cette section, nous examinerons les moyens les plus élémentaires de créer et de travailler avec des tableaux dans PowerShell.

Créer un Tableau

tout d’Abord, nous allons créer un tableau. La façon standard de le faire est d’utiliser @ (), bien qu’il existe d’autres façons.

pour l’instant, créons un tableau appelé « data”. Pour ce faire, exécutez:

$data = @()

Ce tableau est vide pour le moment car nous n’avons spécifié aucune donnée pour cela., Pour vérifier combien d’éléments sont dans un tableau, nous pouvons utiliser la fonction count:

$data.count

qui, pour le moment, renverra un 0, car il n’y a pas d’éléments dans notre tableau. Pour créer un tableau contenant des données, nous mettons ces données entre parenthèses après @:

$data = @('Zero','One','Two','Three')

exécutez la même fonction de comptage maintenant, et vous verrez qu’il y a 4 éléments dans ce tableau. Pour voir à nouveau ces éléments, nous invoquons simplement le tableau:

$data

qui répertoriera les éléments que nous mettons dans le tableau.,

Accès aux Éléments

Maintenant, nous avons un tableau, nous avons besoin d’accéder à des éléments. Il y a plusieurs façons de le faire. La première consiste à utiliser l’index des éléments du tableau. Comme nous l’avons dit précédemment, les index commencent à 0, donc pour récupérer le premier élément de notre tableau, Nous devrons dire à PowerShell de regarder l’élément dont l’index est nul. Nous le faisons en exécutant:

$data

cela renverra « zéro” car c’était la première chaîne que nous avons mise dans notre tableau.,

Nous pouvons également étendre cette syntaxe pour renvoyer plusieurs éléments du même tableau, simplement en mettant plus d’index dans la même commande. Par exemple, exécutez:

$data

cela renverra « Zéro Deux Trois”. Les articles sont retournés dans le même ordre que vous avez entré dans les index. Vous pouvez également utiliser une syntaxe supplémentaire pour renvoyer des ensembles d’éléments d’un tableau. Par exemple:

$data

renverra tous les éléments avec un index compris entre 1 et 3 (inclus)., Et:

$data

renverra le dernier élément du tableau: Le nombre négatif indique à PowerShell de compter en arrière à partir de la fin du tableau, donc dans ce cas, cette commande retournera « Three”, le dernier élément de notre tableau de test.

modifier des Éléments

La même méthode peut être utilisée pour mettre à jour les éléments dans un tableau. Par exemple, pour mettre à jour l’élément dont l’index est 2 (Rappelez-vous que c’est le troisième élément du tableau), nous pouvons exécuter:

$data = 'second'

cela nous donne un accès direct aux éléments à l’intérieur d’un tableau.,

Actions itérées

L’une des fonctionnalités les plus puissantes de PowerShell (et, en fait, de toute interface de ligne de commande) est la possibilité d’effectuer la même action sur tous les éléments d’un tableau. Il y a un certain nombre de façons différentes de le faire.

Le plus simple, c’est d’utiliser un Pipeline, qui est le caractère |. Lorsque vous passez un tableau à un pipeline, chaque élément d’un tableau est traité individuellement. Comme nous l’avons souligné dans notre article sur les objets PowerShell et la tuyauterie de données, c’est souvent le moyen le plus simple d’effectuer des actions itérées.,

Par exemple, pour ajouter une description à chaque élément de notre tableau, nous pouvons utiliser cette commande:

$data | ForEach-Object {"Item: "}

Cette commande indique à PowerShell pour prendre les éléments de $données une à une, et puis, pour chacun d’entre eux ajouter « Article: » au début, suivie par la valeur d’origine.

Il existe plusieurs autres façons d’effectuer des actions itérées dans PowerShell, dont beaucoup vous seront familières si vous avez utilisé d’autres langages de programmation: PowerShell inclut les boucles ForEach, For loops et Switch loops. Pour plus de détails à ce sujet, consultez la documentation Microsoft.,

tableaux D’objets

Jusqu’à présent, nous avons travaillé avec un tableau qui contient des données de base: une chaîne. Cependant, les tableaux peuvent également contenir des objets, et la plupart des utilisations les plus courantes de PowerShell – comme la configuration D’Office 365 – nécessitent que vous sachiez travailler avec des objets. Examinons donc quelques commandes de base pour le faire.

création d’un tableau d’objets

Nous pouvons créer un tableau d’objets de la même manière que nous l’avons fait avec des chaînes, en utilisant la fonction @ ()., Par exemple, pour faire une liste de test d’employés, nous pouvons utiliser:

la plupart des applets de commande renvoient un tableau de ce type lorsque vous leur attribuez une variable avec laquelle travailler.

accès aux objets à partir de tableaux

le processus que nous avons parcouru ci-dessus pour accéder à des données individuelles peut également être utilisé avec des tableaux contenant des objets., Par exemple, l’exécution de:

$data

renverra:

 FirstName LastName ----- ---- Kevin Marquette

alternativement, nous pouvons accéder aux propriétés des objets individuels en spécifiant quelle propriété nous aimerions dans la même commande, comme ceci:

$data.FirstName

qui renverra « Kevin ».

mise à jour des propriétés des objets dans les tableaux

Pour aller plus loin, la même syntaxe nous donne la possibilité de mettre à jour des propriétés individuelles dans les objets qui sont conservés dans les tableaux., Par exemple:

$data.FirstName = 'Jay'

mettra à jour la propriété FirstName du premier élément de notre tableau en « Jay”.

Accès à Tous les Biens dans un Tableau d’Objets

Dans la plupart des langages de programmation, nous aurions dû utiliser un processus itératif (voir ci-dessus) pour accéder à toutes les propriétés d’un tableau d’objets. Nous pouvons également le faire dans PowerShell, bien sûr, en exécutant:

$data | ForEach-Object {$_.LastName}

cela renverra une liste de toutes les propriétés LastName de notre tableau, mais il est coûteux et difficile à écrire chaque fois que vous voulez voir ces données., Donc, à la place, PowerShell a un raccourci. Exécuter ceci:

$data.LastName

Et vous verrez la même liste. PowerShell prend en fait chaque objet à tour de rôle, comme avant, mais il nous cache cette complexité.

les Opérateurs Pour les Tableaux

Presque tous les opérateurs que nous utilisons pour des éléments de données individuels dans PowerShell va également travailler avec les tableaux, mais certains d’entre eux fonctionnent un peu différemment lorsqu’il est utilisé de cette façon. Jetons donc un coup d’œil aux opérateurs les plus courants et à la façon dont vous pouvez les utiliser dans les tableaux.,

-join

l’opérateur-join est l’une des commandes les plus utilisées dans PowerShell, et il est extrêmement utile lorsque vous travaillez avec des tableaux. Il peut être utilisé de manière itérative sur les éléments d’un tableau pour les réunir dans la sortie d’un tableau.

prenons un exemple. Tout d’abord, créer un tableau simple:

$data = @(1,2,3,4)

Et puis utilisez -jointure pour insérer un trait d’union entre chaque élément, et en sortie le résultat:

$data -join '-'

Qui sera de retour « 1-2-3-4”., L’opérateur-join peut également être utilisé sans délimiteur, dans lequel les éléments d’un tableau peuvent être sortis sous la forme d’une série de valeurs non séparées.

-contains

l’opérateur-contains fonctionne sur des tableaux de manière très similaire à son utilisation avec des points de données uniques. Vous pouvez l’utiliser pour vérifier si un tableau contient une chaîne particulière, et il affichera une valeur booléenne. Par exemple:

 PS> $data = @('red','green','blue') PS> $data -contains 'green' True

égalités

Il existe deux opérateurs pour vérifier l’égalité dans PowerShell: -eq et-ne., Si vous avez l’habitude de les utiliser sur des valeurs uniques, cependant, la façon dont celles-ci fonctionnent par rapport aux tableaux peut sembler un peu étrange. Si vous utilisez-eq, par exemple, l’opérateur ne produira pas de « True” booléen, mais retournera l’objet qui correspond.

Par exemple:

 PS> $data = @('red','green','blue') PS> $data -eq 'green' green

– ne opérateur fonctionne de la même manière, sauf qu’il va vous donner toutes les valeurs qui ne sont pas égal à votre valeur spécifiée., So:

 PS> $data = @('red','green','blue') PS> $data -ne 'green' red blue

Vous pouvez cependant utiliser une instruction if() pour comparer la sortie de ces opérateurs avec votre sortie attendue et renvoyer une sortie « True” ou « False”.

comment ajouter des valeurs à un tableau

Après toutes les instructions ci-dessus, vous vous demandez probablement pourquoi nous avons omis d’ajouter des éléments de données à un tableau. C’est parce que il n’y a pas de façon de le faire. Un tableau, une fois créé, reste la même taille pour toujours, et donc pour le rendre plus grand, vous devez le copier dans un nouveau tableau et supprimer l’original.,

cela semble compliqué, mais Powershell gère ce processus pour vous en utilisant une série d’opérateurs assez simples. Il y a deux façons principales de le faire.

Array Addition

PowerShell peut ajouter deux tableaux ensemble en utilisant l’opérateur »+”, ce qui masque la complexité de ce que le système fait réellement. Par exemple, si vous créez deux tableaux de test comme celui-ci:

 $first = @( 'Zero' 'One' ) $second = @( 'Two' 'Three' )

Vous pouvez ensuite les ajouter ensemble en utilisant simplement:

 PS> $first + $second

cela créera un nouveau tableau avec les quatre valeurs et affichera les résultats., Notez cependant qu’il ne donnera pas un nouveau nom à ce nouveau tableau. Pour ce faire, nous utilisons l’opérateur+=.

plus Equals pour combiner des tableaux

Au lieu d’utiliser l’opérateur « +” dans l’exemple ci-dessus, nous aurions pu utiliser l’opérateur »+=”, ce qui nous donnera un tout nouveau tableau:

 $first += 'Two, Three'

la commande semble simple, mais elle cache ce que PowerShell fait réellement ici. Il copie toutes les valeurs de $first et crée un nouveau tableau qui inclut les valeurs supplémentaires. Il supprime ensuite le tableau d’origine.,

ceci est quelque peu problématique car il est coûteux en calcul. Avec de petits tableaux, vous pourriez ne pas remarquer, mais avec de grandes quantités de données, cette méthode peut rapidement verrouiller votre système. C’est pourquoi nous vous avons donné un moyen de contourner ce problème, ci-dessous.

types de tableaux

Jusqu’à présent, nous avons eu affaire à des tableaux par défaut dans PowerShell. Bien que PowerShell ne nous l’ait pas dit à l’époque, chaque tableau que nous avons créé jusqu’à présent est d’un type, le type]. Ce type de tableau peut contenir n’importe quel type de valeur de données.,

tableaux fortement typés

cependant, il arrive que vous souhaitiez restreindre les types de données ou d’objets qu’un tableau peut contenir à un seul. Nous pouvons le faire en utilisant un tableau fortement typé, qui ne peut contenir que le type de données spécifié.

par exemple, Pour faire un tableau qui ne peut prendre que des entiers, on peut utiliser:

 PS> ] $numbers = 1,2,3

Si vous essayez de mettre le mauvais type de données valeur dans un tableau fortement typé, il retourne un code d’erreur.

ArrayList

Comme nous l’avons dit plus haut, ajouter des éléments aux tableaux peut être un problème., Cependant, il existe un autre type de collection – ArrayList – qui gère cela de manière plus élégante. Pour utiliser ce type de collection, cependant, nous devrons invoquer le.Net framework, ce qui peut lancer des sorties malheureuses sur notre chemin.

pour créer une ArrayList, puis y ajouter des éléments, exécutez ce qui suit:

 $myarray = ::new() $myArray.Add('Value')

ici, nous pouvons utiliser le constructeur.net par défaut pour créer une nouvelle ArrayList, puis utiliser l’opérateur-Add pour y ajouter des éléments. L’opérateur est là parce que parfois ces commandes jettent des sorties étranges qui peuvent perturber le code.,

aller plus loin

Ce sont les types de tableau les plus courants dans PowerShell, mais il y en a quelques autres. Si vous développez en tant qu’utilisateur PowerShell, il est utile de commencer à utiliser des ArrayLists au lieu de tableaux droits, mais vous devez également savoir que ce type de tableau n’est pas utilisé par les utilisateurs avancés.

Au Lieu de cela, la plupart des codeurs expérimentés utiliseront un type de liste générique appelé List. Ce type de liste est un peu plus complexe à utiliser car il est dérivé directement de C#, mais une fois que vous l’avez maîtrisé, il offre beaucoup plus de flexibilité que les tableaux dont nous avons discuté jusqu’à présent.,

fonctions de tableau avancées

en plus des fonctionnalités de base que nous avons couvertes jusqu’à présent, il existe également un certain nombre de fonctions de tableau plus avancées, et quelques fonctionnalités supplémentaires à noter, car vous commencez à les utiliser plus fréquemment.

tableaux pré-dimensionnés

la manière standard de créer des tableaux ci-dessus créera un tableau avec une taille déterminée par le nombre d’éléments qu’il contient. Cependant, vous pouvez créer un tableau d’une taille spécifiée en utilisant le nouveau constructeur (size size).

Vous pouvez le faire comme ceci:

 $data = ]::new(4)

Si vous exécutez un .,count requête sur ce tableau, il retournera « 4 », car même s’il n’y a pas de données, il remplira l’espace avec 0. Ceci est en fait extrêmement utile si vous avez besoin d’initialiser un nouveau tableau rempli de zéros car un tableau pré-dimensionné sera initialement rempli de 0.

multiplier les tableaux

multiplier les objets dans un tableau – et en particulier les chaînes – est quelque chose qui confond la plupart des gens quand ils doivent d’abord le faire., Nous avons vu des scripts if() extrêmement compliqués pour atteindre ce résultat, mais il existe un moyen beaucoup plus simple:

 PS> $data = @('red','green','blue') PS> $data * 3

Oui, c’est vrai. Cela créera un nouveau tableau avec chaque valeur répétée trois fois. Vous pouvez également utiliser cette commande comme une autre façon de remplir un tableau avec des zéros (ou toute autre valeur par défaut) en créant un tableau avec la valeur choisie, puis en le multipliant autant de fois que vous le souhaitez.

tableaux imbriqués

Comme beaucoup d’autres langages de programmation, PowerShell prend en charge les tableaux imbriqués., La façon standard de le faire dans PowerShell est d’utiliser un tableau multidimensionnel. L’exemple le plus simple est de créer un tableau bidimensionnel:

 $data = @(@(1,2,3),@(4,5,6),@(7,8,9)) $data2 = @( @(1,2,3), @(4,5,6), @(7,8,9) )

la structure de données que vous créez avec cette commande est une matrice classique, et elle peut être utilisée comme celles d’autres langages de programmation. Par exemple, pour accéder à une valeur particulière de ce tableau, vous devrez spécifier deux dimensions.,

Par exemple, pour accéder à la valeur « 3”, nous utiliserions ceci:

 PS> $outside = 0 PS> $inside = 2 PS> $data 3

Cette commande peut ensuite être utilisée pour accéder à n’importe quelle valeur, mais vous devez ajouter des crochets imbriqués pour entrer dans chaque niveau de la matrice.

un dernier mot

toutes les instructions ci-dessus pourraient être beaucoup pour les utilisateurs qui viennent D’abord à PowerShell, mais ils ont été soigneusement choisis comme un moyen d’apprendre la langue. En combinant les différentes techniques, vous pouvez créer des scripts puissants pour automatiser la plupart des travaux les plus fréquents – et les plus chronophages – que vous effectuez avec PowerShell.,

ces compétences vous aideront également à aller au-delà de PowerShell. La plupart des langages les plus couramment utilisés pour gérer la cybersécurité, comme NetCat et Nmap, utilisent plusieurs des mêmes principes que PowerShell. Utiliser PowerShell pour améliorer votre cybersécurité est donc un excellent moyen d’apprendre à sécuriser vos systèmes de manière plus générale.