PowerShell Foreach und weitere Kontrollstrukturen
Die Windows PowerShell bietet viele Optionen, um sich schnell und einfach wesentliche Konfiguration anzeigen zu lassen. Aber wie liest man nun mehrere Objekte aus? Dazu dient die PowerShell foreach Schleife. Neben dieser speziellen Schleife gibt es aber auch noch die folgenden anderen Optionen.
- IF-Bedingung
- While-Schleife
- for-Schleife
- foreach-Schleife
Je nach Anwendung kommt die passende Schleife bzw. Kontrollstruktur zum Einsatz. In dieser Anleitung wird gezeigt, wie man die foreach Schleife in PowerShell verwendet.
Die erste Frage, welche man sich vermutlich stellt, ist, wann sollte man diese Art von Schleife verwenden?
Exkurs: Programmiergrundlagen zur PowerShell (Video)
Anwendung der powerShell foreach Schleife
Im Prinzip ist sie auch dafür dar, um eine bestimmte Anzahl an Array Elemente der Reihe nach auszulesen und weiterzuverarbeiten. Als praktische Anwendung könne man das Auslesen von Benutzer aus der Active Direcotry vorstellen.
Genau das ist im übrigen auch eine häufige Anwendung. Neben dem Auslesen wird diese Schleife aber auch in der Regel dafür verwendet, um z. B. Daten aus einer CSV Datei auszulesen und weiterzuverarbeiten. Also, wenn man viele Benutzerkonten mit einigen weiteren Parameter wie Profipfad etc. anlegen möchte.
Bevor wir aber diese Möglichkeit näher betrachten, möchte ich als Erstes die reguläre foreach-Schleife aufzeigen. Zunächst wird ein Array mit Werten gefüllt. Dieses wird anschließend über die foreach Schleife ausgelesen und bei jedem Durchgang weiterverarbeitet.
Bei der Konfiguration der ForEach-Schleife wird anschließend festgelegt, dass jeder Wert im Array mit der Variablen $wert angesprochen werden kann. Anschließend wird genau dieser Wert noch mit einer Zahl multipliziert und das Ergebnis im Terminal ausgegeben.
$array = 2, 4, 6, 8, 10
ForEach ($wert in $array) { $wert * 2 }
Auslesen von Objekten
Eine sehr interessante und vor allem wichtige Anwendung ist noch folgende. Es werden die Daten eines Cmdlets über die Pipeline an die foreach-Schleife zur Weiterverarbeitung übergeben.
Das bedeutet, die Objekte werden direkt weiterverarbeitet. Die Syntax ändern sich nur dahin gehend, dass die foreach-schleife jetzt nicht mehr an erster Stelle steht. Das Beispiel verdeutlicht diese Art der Schleifen-Anwendung.
Get-Process | ForEach {$count = 0} {$_.Name; $count++} {"Gesamt: $count
Prozesse."}
Folgende drei Schritte werden dabei durchgeführt:
- Es wird für den Durchlauf eine Variable (hier $count mit dem Wert = 0) festgelegt.
- Der nächst Block liefert dann die Aufgaben, welche durchgeführt werden muss
- Der letzte Block gibt die Anweisung letztlich aus.

ForEach Schleife vs. ForEach-Object
Diese beiden Schleifentypen sehen sehr ähnlich aus. Allerdings haben sie einen wesentlichen Unterschied. Die vorherige Schleife erhält die Daten nicht zwingend über die Pipeline. Deswegen ist die Datenverarbeitung respektive Weiterverarbeitung in der Regel schneller.
Voraussetzung dafür ist natürlich, dass die Daten bereits in einer Variablen vorliegen. Grundsätzlich kann man sich merken, wenn die Daten nicht vorliegen, verwendet man die Foreach-Objekt Schleife, anderenfalls kann man die ForEach-Objekte Schleife anwenden.
Alle hier gezeigten Beispiel kannst du dir übrigens direkt auf Github kostenlos herunterladen und selbst testen. Auch gibt es in PowerShell einige Befehlsreferenzen, welche du dir ebenso kostenlos auf dem Blog downloaden kannst.
Zusätzlich kann ich dir auch den Kurs: Automatisierung mit PowerShell (1/3): Grundlagen* empfehlen. Hier lernst du alles nötige, was du für eine erfolgreiche Administration mit der Windows PowerShell benötigst.
Top Lektüre zum Erlernen der Windows PowerShell
Keine Produkte gefunden.
Das könnte dich auch interessieren
- Die Windows Powershell Pipe richtig anwenden
- 5 Dinge, die du beim Arbeiten mit der Windows PowerShell und Dateien kennen solltest
- Mit der Windows PowerShell die Prozesse mit dem höchsten CPU Verbrauch ausgeben.
- Wie kann man sich mit der Windows PowerShell die ältesten oder auch neuesten Dateien auflisten lassen
- Wie kann man sich mit der Windows PowerShell sämtlich Eigenschaften, Methoden und Attribute eines Objekts anzeigen lassen.
- Wie kann man sich neue Hilfedateien unter der Windows PowerShell herunterladen?







