Powershell Foreach Loop Statement Tutorial cu exemple
ForEach
este o declarație PowerShell folosit pentru a utiliza itera sau buclă pe lista dată, matrice sau colecție de obiecte, siruri de caractere, numere, etc. ForEach este un mecanism de buclă foarte popular în care putem folosi diferite cazuri, cum ar fi buclă prin fișiere, numere, șiruri, procese etc. Powershell versiunea 4.0 aduce unele îmbunătățiri de performanță laForEach
bucla.
sintaxa PowerShell ForEach
instrucțiunea Foreach are următoarea sintaxă în care folosimITEM
COLLECTION
șiCODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- elementul este o singură valoare sau obiect care se schimbă pe fiecare iterație.
- colecția este o matrice, colecție, listă de valori sau obiecte precum 1,2,3,4.
- bloc de cod este blocul în care se execută operațiunea reală care utilizează în general elementul. Acest bloc poate fi linii simple sau multiple.
Foreach printr-o matrice de siruri de caractere
într-un mod simplu, putem itera peste lista dată de matrice șir. Repetăm peste matricea numită” orașe ” care deține mai multe nume de orașe. Vom imprima fiecare nume de oraș cu comanda” echo ” ca mai jos.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
We se poate vedea că fiecare nume de oraș este imprimat la terminalul PowerShell într-o singură linie.
Foreach printr-o colecție de numere
în exemplul anterior, am buclat peste o listă dată de șiruri de caractere. De asemenea, putem itera sau bucla printr-o listă de numere. Vom crea o matrice numită numbers
și vom itera peste fiecare element din această matrice numerică.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
$_ usage
când se utilizează unele cmdleturi pentru a redirecționa ieșirea cmdletului către foreach, putem folosi „$” pentru fiecare element sau obiect. De exemplu, dacă folosim cmdletul „Get-Process”, fiecare element sau proces va fi atribuit $
în fiecare iterație. Putem specifica atributul ca nume $.Name
și imprima ca mai jos.
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
va lista fișiere și foldere precumdir
comanda MSDOS. Această ieșire va fi scrisă în consolă cu comanda Echo
.
foreach($file in Get-ChildItem) {Echo $file}
foreach prin extensii de fișiere specifice, cum ar fi bat
putem lista în mod specific extensia specificată. Extensia va oferi, în general, tipul de fișier ca text, avi, mkv, mp3, doc etc. În acest exemplu, vom enumera doar*.bat
sau fișiere Bat.
foreach($file in Get-ChildItem *.bat) {Echo $file}
putem vedea că vor fi listate numai fișiere precum test.bat
și autoexec.bat
.
Foreach peste fișier CSV
fișierele CSV sunt utilizate pentru a stoca date text într-o manieră structurată. Putem cu ușurință foreach în fiecare linie a unui fișier CSV ca mai jos. În acest exemplu, vom citi un fișier CSV IP și vom furniza foreach
pentru a imprima consola Powershell.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}