Tutoriel d’instruction de Boucle Powershell ForEach avec des Exemples
ForEach
est une instruction PowerShell utilisée pour utiliser l’itération ou la boucle sur la liste, le tableau ou la collection donnés des objets, des chaînes, des nombres, etc. ForEach est un mécanisme de boucle très populaire où nous pouvons utiliser différents cas comme la boucle à travers des fichiers, des nombres, des chaînes, des Processus, etc. La version 4.0 de Powershell apporte quelques améliorations de performances à la boucle ForEach
.
Syntaxe PowerShell ForEach
L’instruction Foreach a la syntaxe suivante où nous utilisons ITEM
COLLECTION
et CODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- L’élément est une valeur ou un objet unique qui change à chaque itération.
- COLLECTION est un tableau, une collection, une liste de valeurs ou d’objets tels que 1,2,3,4.
- LE BLOC DE CODE est le bloc où s’exécute l’opération réelle qui utilise généralement ITEM. Ce bloc peut être une ou plusieurs lignes.
Foreach À Travers Un Tableau de Chaînes
De manière simple, nous pouvons parcourir la liste donnée du tableau de chaînes. Nous parcourons le tableau nommé « villes » qui contient plusieurs noms de villes. Nous imprimerons chaque nom de ville avec la commande « echo » comme ci-dessous.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
Nous pouvons assurez-vous que chaque nom de ville est imprimé sur le terminal Powershell en une seule ligne.
Foreach À Travers Une Collection de Nombres
Dans l’exemple précédent, nous avons bouclé une liste donnée de chaînes. Nous pouvons également itérer ou parcourir une liste de nombres. Nous allons créer un tableau nommé numbers
et itérer sur chaque élément de ce tableau de nombres.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
Usage_Utilisation
Lorsque vous utilisez certaines applets de commande pour rediriger la sortie de l’applet de commande vers le Foreach, nous pouvons utiliser « $” pour chaque élément ou objet. Par exemple, si nous utilisons l’applet de commande « Get-Process”, chaque élément ou processus sera affecté au $
à chaque itération. Nous pouvons spécifier l’attribut comme Name $.Name
et imprimer comme ci-dessous.
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
listera les fichiers et dossiers comme la commande MSDOS dir
. Cette sortie sera écrite sur la console avec la commande Echo
.
foreach($file in Get-ChildItem) {Echo $file}
Pour chaque Extension de fichier Spécifique Comme Bat
, Nous pouvons lister spécifiquement l’extension spécifiée. L’extension fournira généralement le type de fichier comme text, avi, mkv, mp3, doc, etc. Dans cet exemple, nous listerons uniquement les fichiers *.bat
ou les fichiers Bat.
foreach($file in Get-ChildItem *.bat) {Echo $file}
Nous pouvons voir que seuls les fichiers tels que test.bat
et autoexec.bat
seront répertoriés.
Pour chaque fichier CSV
Les fichiers CSV sont utilisés pour stocker des données texte de manière structurée. Nous pouvons facilement foreach dans chaque ligne d’un fichier CSV comme ci-dessous. Dans cet exemple, nous allons lire un fichier CSV IP et le fournir à foreach
pour imprimer la console Powershell.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}