c’est une question que je reçois assez fréquemment donc j’ai pensé écrire un article à ce sujet. Comme le titre l’indique, je vais montrer comment vous pouvez ajouter ou supprimer des éléments à un tableau PowerShell une fois qu’il a été créé.
PowerShell Tableaux
commençons par la définition d’un tableau qu’il vient de PowerShell documentation:
un tableau est une structure de données qui est conçu pour stocker une collection d’éléments., Les articles peuvent être du même type ou de types différents.À partir de Windows PowerShell 3.0, une collection de zéro ou un objet a certaines propriétés de tableaux.
créer un tableau dans PowerShell est très simple et vous l’avez probablement déjà fait lorsque, par exemple, obtenir une liste d’utilisateurs à partir D’Active Directory
$adUsers = Get-AdUser -Filter '*' -Server $adDomainController
ce qui précède renverra un tableau d’objets AD contenant tous les utilisateurs correspondant au filtre utilisé.,
bien sûr, vous pouvez initialiser un tableau vide avec la syntaxe suivante
$myArray = @()# Specify object type$myArray = @()
ce qui précède initialisera un tableau vide que nous pouvons, par exemple, remplir avec une requête AD ou ajouter des éléments statiques comme ceci
$myArray = (1,2,3,4,5)
ce qui précède ajoutera des éléments 1 à 5 à l’objet myArray instanciant un nouvel objet avec une longueur de 5
PowerShell ajouter des éléments à un tableau
nous avons vu comment créer et attribuer des valeurs à un tableau mais que faire si nous voulons ajouter un sixième élément à myArray?, Si vous essayez ce qui suit
$myArray.Add(6)
Il échouera avec l’exception suivante
cette exception est levée comme un PowerShell tableau est une collection de taille fixe et l’erreur est de dire simplement qu’il ne peut pas être prolongé.,
Une solution courante est d’utiliser l’opérateur+=, comme par exemple
$myArray += 6# Print array's length$myArray.length6
Lors de l’utilisation de l’opérateur += ce qui se passe sous le capot,
- PowerShell crée un nouveau tableau avec les mêmes éléments que l’ancien, plus le nouvel élément
- PowerShell écrasera tableau existant avec le nouveau contenu
Tout cela est transparent pour l’utilisateur de sorte que vous ne verrez pas de différence.,
ajouter des éléments à un tableau – entrez ArrayList
Si vous voulez éviter toute copie/déplacement de données, vous pouvez instancier myArray en tant que ArrayList qui est dynamique et vous permettra d’Ajouter Supprimer des éléments à la volée
de même, vous pouvez supprimer des éléments d’une ArrayList comme ceci
# Will corresponding item by index$myArrayList.RemoveAt(1)
remarque: la méthode Remove acceptera la valeur de l’élément, donc 1 dans l’exemple ci-dessus fait référence à la valeur et non à l’index de l’élément.,
Cast to to suppress Add method printing new array’s length
Create Array List the alternate way
L’exemple ci-dessus appellera la méthode New-Object pour instancier une nouvelle ArrayList mais cela est relativement coûteux en termes de ressources de calcul>
$myArray = @()
en plus d’être plus court, il a l’avantage supplémentaire d’éviter les performances négatives de New-Object et d’optimiser le code est toujours une bonne idée, surtout Lorsqu’il s’agit de scripts plus volumineux.,34f072bc0″>
notes de fermeture
lors de l’écriture de code, bien que N’étant pas requis par PowerShell, j’essaie de toujours déclarer le type de l’objet car il est utile de connaître, à un moment donné, les propriétés et les méthodes prises en charge par l’objet.
plutôt que
$myString = 'Some Text'
ce n’est pas requis par PowerShell mais je trouve que cela aide la lisibilité du code et simplifie le travail avec un objet déclaré 800/900 lignes dans le code sans avoir à revenir à la déclaration de la variable.,
Leave a Reply