No início, havia um cmdlet…
na Maioria das vezes, quando você pensar em escrever algo no PowerShell, você irá encontrar normalmente dentro das primeiras linhas de uma Get-ChildItem
, então você vai, inevitavelmente, um para cada ciclo.
Normalmente eu iria escrever isso como foreach($item in $items)
, mas em uma ocasião, o autocompletar veio na variável de matriz com um .ForEach
opção, Eu não sabia o uso correto deste então, eu tentei o costume
Get-Help ForEach -ExamplesGet-Help ForEach -Online
Como este realmente não mostrar esta opção (para ser honesto, eu posso não ter ido para a direita a ajuda do PS), então eu pesquisei a mesma coisa, o que inicialmente me levou para uma página semelhante em ss64.com, but they provided a link to other ForEach
options, one of which contained how to use the ForEach (Method)
How to use .ForEach
vamos ver se consigo explicar a ele no código:
$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.})
Como você pode ver, esta forma de escrita de um ForEach ainda permite uma multiline instrução, e desde que você saiba quais propriedades são depois você nunca mais terá de definir o $_ objeto (mas eu sei que vai).
Beware of Dragons
There is something to be aware of in PowerShell version 3. Se o $array
pode ser nulo, você precisa colocar em uma verificação para isso antes de fazer suas ações.
if($items -ne $null){...}
Se tiver usado PowerShell 2, poderá já estar ciente deste problema com arrays.
em PowerShell 3 e acima do laço foreach lida com objetos de matriz nula automaticamente, mas não será até que você use PowerShell 5 que o método ForEach lida com matrizes nulas.então … eu gosto?