Au début, il y avait une applet de commande
La plupart du temps, lorsque vous pensez à écrire quelque chose dans PowerShell, vous trouverez généralement dans les premières lignes un Get-ChildItem
, vous aurez alors inévitablement un pour chaque boucle.
Normalement, je devrais écrire ce que foreach($item in $items)
, mais à une occasion, la saisie semi-automatique, est apparu sur le tableau de variable avec un .ForEach
option, Je ne connaissais pas l’utilisation correcte de ce que j’ai essayé de l’habituelle
Get-Help ForEach -ExamplesGet-Help ForEach -Online
Comme cela n’a pas vraiment montrer cette option (pour être honnête, j’ai peut-être pas allé à l’aide de PS) donc je l’ai googlé la même chose, ce qui au début m’a pris pour une page similaire sur ss64.com, mais ils ont fourni un lien vers d’autres options ForEach
, dont l’une contenait comment utiliser la méthode ForEach (Méthode)
Comment utiliser.ForEach
voyons si je peux l’expliquer en code:
$items.ForEach({# This exposes the $_ object, but I find that it doesn't know what each item is.# So I often find myself setting that to a new variable.$item = $_#I guess as you learn more and more you become versed in the ways of the object and can free type out the properties you need.})
Comme vous pouvez le voir, cette forme d’écriture d’un ForEach permet toujours une instruction multiligne, et tant que vous savez quelles propriétés vous êtes après, vous n’avez jamais à définir l’objet__ (mais je sais que je le ferai).
Méfiez-vous des dragons
Il y a quelque chose à savoir dans PowerShell version 3. Si $array
peut être nul, vous devez vérifier cela avant de faire vos actions.
if($items -ne $null){...}
Si vous avez utilisé PowerShell 2, vous êtes peut-être déjà au courant de ce problème avec les tableaux.
Dans PowerShell 3 et au-dessus, la boucle foreach gère automatiquement les objets de tableau null, mais ce n’est que lorsque vous utilisez PowerShell 5 que la méthode ForEach gère les tableaux nuls.