Zum Inhalt springen

Schleifen

Core
Lernziele
  • foreach, for und while unterscheiden und passend wählen
  • ForEach-Object in der Pipeline verwenden

Schleifen sind fundamentale Kontrollstrukturen in PowerShell, mit denen du wiederkehrende Aufgaben automatisieren kannst. In diesem Dokument werden die wichtigsten Schleifenkonstrukte erläutert: foreach, for und while (sowie do-while). Jede Schleife hat ihren eigenen Anwendungsfall, und die Wahl des richtigen Konstrukts kann deinen Code effizienter und lesbarer machen.

Die foreach-Schleife wird verwendet, um durch alle Elemente einer Sammlung oder eines Arrays zu iterieren. Sie ist ideal, wenn du jeden Eintrag einer Liste verarbeiten möchtest.

Terminal-Fenster
# Erstellen eines Arrays
$zahlen = @(1, 2, 3, 4, 5)
# Iteration durch das Array mit foreach
foreach ($zahl in $zahlen) {
Write-Output "Aktuelle Zahl: $zahl"
}

Die ForEach-Object-Cmdlet-Variante wird häufig in der Pipeline verwendet:

Terminal-Fenster
# Iteriere durch alle Prozesse und gib deren Namen aus
Get-Process | ForEach-Object {
Write-Output "Prozess: $($_.Name)"
}

Die for-Schleife eignet sich, wenn du den Schleifenindex benötigst oder die Anzahl der Iterationen im Voraus kennst.

Terminal-Fenster
# Eine Schleife, die 5-mal durchläuft
for ($i = 0; $i -lt 5; $i++) {
Write-Output "Iteration: $i"
}
Terminal-Fenster
# Iteriere durch ein Array mit Zugriff auf den Index
# Achtung: "$i:" würde PowerShell als Variable mit Laufwerk lesen. Deshalb ${i}.
$namen = @("Alice", "Bob", "Charlie")
for ($i = 0; $i -lt $namen.Count; $i++) {
Write-Output "Name an Index ${i}: $($namen[$i])"
}

Die while-Schleife führt ihren Codeblock solange aus, wie eine bestimmte Bedingung wahr ist. Sie eignet sich, wenn die Anzahl der Wiederholungen nicht im Voraus bekannt ist.

Terminal-Fenster
# Zähle, bis eine Bedingung nicht mehr erfüllt ist
$count = 0
while ($count -lt 5) {
Write-Output "Count ist: $count"
$count++
}

Die do-while-Schleife garantiert, dass der Codeblock mindestens einmal ausgeführt wird, bevor die Bedingung geprüft wird.

Terminal-Fenster
$count = 0
do {
Write-Output "Do-While Count ist: $count"
$count++
} while ($count -lt 5)
Terminal-Fenster
1..5 | ForEach-Object -Parallel { Start-Sleep 1; "Fertig: $_" } -ThrottleLimit 5

Das führt die Blöcke gleichzeitig aus (PowerShell 7). Für den Einstieg brauchst du das nicht. Es ist praktisch, wenn viele Server nacheinander zu langsam wären.

  • Vermeide endlose Schleifen:
    Achte darauf, dass in Schleifen wie while die Bedingung irgendwann falsch wird, um endlose Schleifen zu vermeiden.
  • Nutze foreach, wenn möglich:
    Wenn du durch Sammlungen iterierst, ist foreach oft lesbarer und einfacher zu verwenden.
  • Verwende break und continue:
    Mit break kannst du eine Schleife vorzeitig beenden, und continue lässt dich zur nächsten Iteration springen.
  • Saubere Struktur und Kommentare:
    Kommentiere komplexe Schleifen, um den Code nachvollziehbar und wartbar zu halten.
  • foreach:
    Ideal zur Iteration durch Sammlungen und Arrays, besonders in Verbindung mit der Pipeline.
  • for:
    Nützlich, wenn du den Schleifenindex benötigst oder eine feste Anzahl von Iterationen hast.
  • while / do-while:
    Eignet sich, wenn die Anzahl der Wiederholungen von einer Bedingung abhängt.

Diese Schleifenstrukturen sind essenzielle Bausteine in PowerShell, die dir helfen, wiederkehrende Aufgaben zu automatisieren und deinen Code effizient und modular zu gestalten.