Powershell ForEach Loop Statement Tutorial with Examples
ForEach
ist eine PowerShell-Anweisung, mit der Iterationen oder Schleifen über die angegebene Liste, das Array oder die Sammlung von Objekten, Zeichenfolgen, Zahlen usw. ausgeführt werden. ForEach ist ein sehr beliebter Schleifenmechanismus, bei dem wir verschiedene Fälle wie das Durchlaufen von Dateien, Zahlen, Zeichenfolgen, Prozessen usw. verwenden können. Powershell Version 4.0 bringt einige Leistungsverbesserungen für die ForEach
Schleife.
PowerShell ForEach Syntax
Foreach Anweisung hat die folgende Syntax, wo wir ITEM
COLLECTION
und CODE-BLOCK
.
ForEach(ITEM in COLLECTION){ CODE BLOCK}
- ITEM ist ein einzelner Wert oder ein Objekt, das sich bei jeder Iteration ändert.
- COLLECTION ist ein Array, eine Sammlung, eine Liste von Werten oder Objekten wie 1,2,3,4.
- CODEBLOCK ist der Block, in dem die reale Operation ausgeführt wird, die im Allgemeinen ITEM verwendet. Dieser Block kann einzelne oder mehrere Zeilen sein.
Foreach Durch Ein Array von Strings
Auf einfache Weise können wir über die angegebene Liste des String-Arrays iterieren. Wir iterieren über das Array mit dem Namen „cities“, das mehrere Städtenamen enthält. Wir werden jeden Stadtnamen mit dem Befehl „echo“ wie unten drucken.
$cities = ("istanbul,ankara,canakkale")foreach ($city in $cities){ echo $city}
Wir können sehen, dass jeder Stadtname auf der powershell-Terminal in einer einzigen Zeile.
Foreach Durch eine Sammlung von Zahlen
Im vorherigen Beispiel haben wir eine bestimmte Liste von Zeichenfolgen durchlaufen. Wir können auch eine Liste von Zahlen iterieren oder durchlaufen. Wir erstellen ein Array mit dem Namen numbers
und iterieren über jedes Element in diesem Zahlenarray.
$numbers=(1,2,3,4,5)foreach ($number in $numbers){ echo $number}
$_ Usage
Wenn Sie einige Cmdlets verwenden, um die Ausgabe des Cmdlets an Foreach umzuleiten, können wir „$“ für jedes Element oder Objekt verwenden. Wenn wir beispielsweise das Cmdlet „Get-Process“ verwenden, wird jedem Element oder Prozess in jeder Iteration die $
zugewiesen. Wir können das Attribut wie Name $.Name
angeben und wie unten drucken.
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
listet Dateien und Ordner wie dir
MSDOS-Befehl auf. Diese Ausgabe wird mit dem Befehl Echo
in die Konsole geschrieben.
foreach($file in Get-ChildItem) {Echo $file}
Foreach Durch bestimmte Dateierweiterungen wie Bat
Wir können die angegebene Erweiterung speziell auflisten. Die Erweiterung bietet im Allgemeinen den Dateityp wie Text, AVI, MKV, MP3, doc usw. In diesem Beispiel listen wir nur *.bat
oder Bat-Dateien auf.
foreach($file in Get-ChildItem *.bat) {Echo $file}
Wir können sehen, dass nur Dateien wie
test.bat
und autoexec.bat
aufgelistet.
Foreach über CSV-Datei
CSV-Dateien werden verwendet, um Textdaten strukturiert zu speichern. Wir können leicht in jeder Zeile einer CSV-Datei wie unten foreach . In diesem Beispiel werden wir eine IP-CSV-Datei lesen und an die foreach
senden, um die Powershell-Konsole zu drucken.
$IPs = (Get-Content IP.csv).split(",")foreach ( $IP in $IPs){ echo $IP}