Powershell ForEach Loop Statement Tutorial with Examples
ForEach
è un’istruzione PowerShell utilizzata per utilizzare iterate o loop sull’elenco, sull’array o sulla raccolta di oggetti, stringhe, numeri, ecc. ForEach è un meccanismo di loop molto popolare in cui possiamo utilizzare diversi casi come loop through file, Numeri, stringhe, processi, ecc. Powershell versione 4.0 porta alcuni miglioramenti delle prestazioni al cicloForEach
.
Sintassi di PowerShell ForEach
L’istruzione Foreach ha la seguente sintassi in cui usiamoITEM
COLLECTION
eCODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- ITEM è un singolo valore o oggetto che cambia ad ogni iterazione.
- COLLECTION è un array, una raccolta, un elenco di valori o oggetti come 1,2,3,4.
- BLOCCO DI CODICE è il blocco in cui viene eseguita l’operazione reale che generalmente utilizza ITEM. Questo blocco può essere linee singole o multiple.
Foreach Attraverso un array di stringhe
In un modo semplice, possiamo scorrere l’elenco dato dell’array di stringhe. Ripetiamo l’array denominato “cities” che contiene più nomi di città. Stamperemo ogni nome della città con il comando “echo” come di seguito.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
Possiamo vedere che ogni citta ‘ del nome è stampato il powershell terminale in una singola riga.
Foreach Attraverso una raccolta di numeri
Nell’esempio precedente, abbiamo eseguito il loop su un determinato elenco di stringhe. Possiamo anche iterare o scorrere un elenco di numeri. Creeremo un array chiamato numbers
e itereremo su ogni elemento in questo array numerico.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
$_ Utilizzo
Quando si utilizzano alcuni cmdlet per reindirizzare l’output del comando per il Foreach possiamo usare “$” per ogni elemento o un oggetto. Ad esempio, se usiamo il cmdlet “Get-Process”, ogni elemento o processo verrà assegnato a $
in ogni iterazione. Possiamo specificare l’attributo come Name $.Name
e stampare come di seguito.
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
elencherà file e cartelle come dir
Comando MSDOS. Questo output verrà scritto sulla console con il comandoEcho
.
foreach($file in Get-ChildItem) {Echo $file}
Foreach Attraverso Specifiche Estensioni dei File Bat
Possiamo elencare specificamente l’estensione specificata. L’estensione fornirà generalmente il tipo di file come testo, avi, mkv, mp3, doc ecc. In questo esempio, elencheremo solo*.bat
o file Bat.
foreach($file in Get-ChildItem *.bat) {Echo $file}
Possiamo vedere che solo i file come test.bat
e autoexec.bat
saranno elencati.
Foreach su file CSV
I file CSV vengono utilizzati per memorizzare i dati di testo in modo strutturato. Possiamo facilmente foreach in ogni riga di un file CSV come di seguito. In questo esempio, leggeremo un file CSV IP e forniremo al foreach
per stampare la console Powershell.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}