Powershell ForEach Loop Statement Tutorial with Examples
ForEach
é uma PowerShell statement usada para usar iterate ou loop sobre a lista dada, array ou coleção dos objetos, cadeias, números, etc. ForEach é um mecanismo de loop muito popular onde podemos usar diferentes casos como loop através de arquivos, números, Strings, processos, etc. Powershell versão 4.0 traz algumas melhorias de desempenho para oForEach
loop.
PowerShell Sintaxe ForEach
instrução Foreach tem a seguinte sintaxe, onde podemos usar ITEM
COLLECTION
e CODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- ITEM é um único valor ou objeto que muda ao longo de cada iteração.
- coleção é uma matriz, coleção, lista de valores, ou objetos como 1,2,3,4.
- bloco de código é o bloco onde a operação real é executada que geralmente usa ITEM. Este bloco pode ser de linhas simples ou múltiplas.
Foreach através de um Array de Strings
de uma forma simples, podemos iterar sobre a lista dada do array de string. Estamos a analisar a matriz chamada “cidades” que contém vários nomes de cidades. Vamos imprimir cada nome da cidade com o comando “echo”, como em baixo.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
podemos ver que cada nome da cidade é impresso para o powershell terminal em uma única linha.
Foreach Through An Collection of Numbers
In the previous example, we have looped over a given list of strings. Nós também podemos iterar ou loop através de uma lista de números. Nós criaremos um array chamado numbers
e iterate sobre cada item neste array de números.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
$_ Uso de
Quando usando alguns cmdlets para redirecionar a saída para o cmdlet Foreach, podemos usar o “$” para cada item ou objeto. Por exemplo, se usarmos o cmdlet “Get-Process” cada item ou processo será atribuído ao $
em cada iteração. Podemos especificar o atributo como nome $.Name
e imprimir como em baixo.
PS> Get-Process | ForEach-Object {$_.ProcessName}
We can also print multiple attributes in foreach by delimiting them with comma.
PS> Get-Process | ForEach-Object {$_.ProcessName, $_.ID}
Foreach Through Files
We can also loop through files by using Get-ChildItem
cmdlet. Get-ChildItem
irá listar ficheiros e pastas comodir
comando MSDOS. Esta saída será escrita para consolar com o comando Echo
.
foreach($file in Get-ChildItem) {Echo $file}
Foreach Através de Extensões de arquivos Específicos, Como Morcego
Podemos listar especificamente a extensão especificada. A extensão irá geralmente fornecer o tipo de arquivo como texto, avi, mkv, mp3, doc etc. Neste exemplo, vamos listar apenas*.bat
ou arquivos Bat.
foreach($file in Get-ChildItem *.bat) {Echo $file}
podemos ver que somente os arquivos como test.bat
e autoexec.bat
serão listados.
Foreach Over CSV File
CSV files are used to store text data in a structured manner. Podemos facilmente encontrar em cada linha de um arquivo CSV como em baixo. Neste exemplo, vamos ler um arquivo IP CSV e fornecer ao foreach
para imprimir a consola Powershell.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}