PowerShell ist eine leistungsstarke Skriptsprache, die viele Funktionen für die Automatisierung und Verwaltung von Windows-basierten Systemen bietet. Eine der am häufigsten verwendeten Strukturen ist die PowerShell-Schleife while
.
Keine Sorge, wenn Sie beim Erlernen der PowerShell-Skripterstellung in einer Endlosschleife stecken bleiben. Lassen Sie sich von der PowerShell-while
-Schleife zu Ihrem großen Ausbruch führen. Und in diesem Tutorial werden Sie zu den Grundlagen der Arbeit mit while
-Schleifen in PowerShell zurückkehren, während Sie Ihre Skripte schreiben.
Lesen Sie weiter, um Ihre PowerShell-Skripting-Fähigkeiten auf die nächste Stufe zu bringen!
Voraussetzungen
In diesem Tutorial wird eine praktische Demonstration durchgeführt. Stellen Sie sicher, dass Sie Folgendes haben, um mitzumachen:
- A Windows machine – This tutorial uses Windows 10.
- Windows PowerShell 5.0 oder höher installiert – Dieses Tutorial verwendet PowerShell 7.
- A user account with administrator privileges.
Ausführen von einzelnen Bedingungen while
-Schleifen
Eine der einfachsten Arten von while
-Schleifen ist die Einzelbedingungsart. Im Gegensatz zur If
-Anweisung führt dieser Schleifentyp einen Satz von angegebenen Befehlen aus, solange eine bestimmte Bedingung als wahr ausgewertet wird. Wenn ein „False“ zurückgegeben wird, bricht die Schleife ab, und die Ausführung wird mit dem Rest des Skripts fortgesetzt.
Unten finden Sie die Syntax für eine einzelne Bedingung while
Schleife:
- Das Erste, was auffällt, ist die Verwendung von Klammern. Die Bedingung muss in Klammern eingeschlossen sein, während der Codeblock eine Gruppe von PowerShell-Befehlen ist, die ausgeführt werden, solange die Bedingung wahr ist.
- Das Zweite, was zu beachten ist, ist, dass die Bedingung einen booleschen Wert zurückgeben muss, der entweder True oder False ergibt.
Führen Sie den folgenden Code aus, wobei der Wert von $val
bei 0
beginnt und jedes Mal, wenn der Codeblock ausgeführt wird, um 1
erhöht wird, bis der Wert der Variable $val
3
erreicht.
Wenn $val
den Wert 3
erreicht, was die Bedingung falsch macht, wird die Schleife abgebrochen, und die Ausführung wird mit dem Rest des Skripts fortgesetzt.

Ausführen einer PowerShell While-Schleife mit integrierten Variablen ($true
/$false
)
Das vorherige Beispiel, das Bedingungen in der while
-Schleife verwendet, funktioniert gut. Aber Sie können auch PowerShell’s integrierte Variablen wie $true
und $false
verwenden, um eine While
-Schleife zu erstellen.
Die unten stehende Syntax führt aus, bis $true
nicht mehr $true
ist. Mit anderen Worten, die Schleife läuft endlos. Sie müssen jedoch immer eine Möglichkeit einschließen, aus einer endlosen Schleife auszubrechen. Andernfalls sind Sie für immer stecken geblieben. Sie werden später in diesem Tutorial mehr darüber erfahren, wie Sie mit break
und continue
aus einer Schleife ausbrechen können.
Führen Sie den unten stehenden Code-Block aus, der endlos läuft und den Wert von $i
auf die Konsole druckt.
Drücken Sie nun Ctrl+C, um aus der Schleife auszubrechen. Diese Schleife verbraucht viele Systemressourcen, also seien Sie vorsichtig bei ihrer Verwendung.

while
loop with PowerShell’s built-in ($true
) variableAusführen von Mehrfachbedingungs-While
-Schleifen
Zusätzlich zu einfachen Bedingungs-while
-Schleifen können auch mehrere Bedingungen in einer while
-Schleife erstellt werden. Wie bei der einfachen Bedingungs-While
-Schleife müssen die Bedingungen einen booleschen Wert zurückgeben, entweder True oder False.
Im Folgenden finden Sie die Syntax für eine mehrfache Bedingungs-while
-Schleife, ähnlich der Syntax für eine einfache Bedingungs-while
-Schleife. Der Hauptunterschied besteht darin, dass Sie mehrere Bedingungen mit den folgenden Operatoren kombinieren können:
- UND (
-and
) – Beide Bedingungen müssen wahr sein. - ODER (
-or
) – Mindestens eine Bedingung muss wahr sein.
Führen Sie den folgenden Code aus, der solange eine Schleife durchläuft, wie $val
ungleich (-ne
) 3
ist -und
$i
ungleich (-ne
) 5
ist.
Wenn die Werte beider Variablen ihre jeweiligen Bedingungen erfüllen, wird die Schleife unterbrochen, und die Ausführung wird mit dem Rest des Skripts fortgesetzt.

Ausführen einer while
-Schleife mit UND Operator

while
loop with AND operatorJetzt führen Sie den unten stehenden Code aus, der den Benutzer nach seinem Alter fragt, das in der Variable $age
gespeichert ist.
Wenn der Benutzer eine Zahl eingibt, die kleiner ist als (-lt
) 1
oder keine Zahl ist (-nomatch
), wird der Benutzer erneut aufgefordert, eine gültige Zahl einzugeben. Dieses Verhalten ist nützlich, um Benutzern mehrere Chancen zu geben, eine gültige Eingabe zu machen.
Im folgenden Output sehen Sie, dass der Benutzer dreimal aufgefordert wurde, sein Alter einzugeben, wie folgt:
- Das erste Mal gab der Benutzer zehn ein, was keine Zahl ist.
- Das zweite Mal gab der Benutzer 0 ein, was unter 1 liegt.
- Das dritte Mal gab der Benutzer 10 ein, was ein gültiges Alter ist.

while
loop with the OR operatorVerwendung der BREAK- und CONTINUE-Schlüsselwörter in While-Schleifen
Sie haben gesehen, wie while
-Schleifen Flexibilität zu Ihrem PowerShell-Skript hinzufügen. Aber um die Ausführung Ihrer While-Schleifen besser zu kontrollieren, fügen Sie die Schlüsselwörter break
und continue
hinzu.
Zum Beispiel, wenn Sie nur eine bestimmte Anzahl von Elementen in einem Array verarbeiten möchten, können Sie das BREAK-Schlüsselwort verwenden, um die Schleife zu verlassen, wenn die gewünschte Anzahl von Elementen verarbeitet wurde.
Diese Schlüsselwörter funktionieren wie folgt:
Keyword | Function |
---|---|
break | Immediately exits the loop and continues execution with the rest of the script. |
continue | Skips over the remaining code block in the current iteration of the loop and continues with the next iteration. |
Führen Sie den folgenden Code aus, der durch ein Array von 10 Elementen schleift.
Im folgenden Code überprüft die if
-Anweisung den Wert von $i
. Wenn der Wert von $i
5
ist, überspringt das continue
-Schlüsselwort den verbleibenden Code in der Schleife und fährt mit der nächsten Iteration fort. Wenn der Wert von $i
8
ist, beendet das break
-Schlüsselwort die Schleife und fährt mit dem restlichen Skript fort.
Andernfalls gibt die while
-Schleife aus (Write-Host
) und erhöht den Wert der Variablen $i
um 1
.
Wie Sie im untenstehenden Output sehen können, hat die Schleife die fünften und achten Elemente im Array übersprungen. Die while
-Schleife hat alle anderen Elemente im Array verarbeitet und ist nach Erreichen des achten Elements beendet.

while
loop with break
and continue
keywordsBegrenzung der Laufzeit einer While-Schleife
In der Regel möchten Sie möglicherweise die Laufzeit einer Schleife begrenzen. Vielleicht versuchen Sie, eine Verbindung zu einem Remote-Server herzustellen. In diesem Fall können Sie dem Server Zeit geben, zu antworten, bevor Sie die Schleife durch Verwendung des Start-Sleep
-Cmdlets in Ihrer while
-Schleife beenden.
Das Cmdlet Start-Sleep
pausiert die Ausführung des Skripts für eine bestimmte Zeit.
Führen Sie den folgenden Code aus, um das aktuelle Datum und die Uhrzeit zu erhalten und im $startTime
Variable zu speichern Get-Date
. Die while
-Schleife wird ausgeführt, solange das aktuelle Datum/die aktuelle Uhrzeit weniger als 10
Sekunden vom im $startTime
gespeicherten Wert entfernt ist.
Während die while
-Schleife läuft, wird eine Nachricht gedruckt, während das Cmdlet Start-Sleep
die Ausführung des Skripts für 1
Sekunde pausiert.
Der folgende Codeblock ist nur ein Platzhalter für das, was Sie tatsächlich in der Praxis verwenden würden. Sie können bei Bedarf mehr Code in die Schleife einfügen.
Hier unten siehst du, dass die Schleife weiterhin für 10 Sekunden ausgeführt wurde, bevor sie die Schleife verlässt.

while
loop runsZusammenfassung
PowerShell while
Schleifen sind nützlich, wenn komplexe Konzepte behandelt werden müssen, um nicht in einer Schleife stecken zu bleiben oder während des Schreibens von Skripten. In diesem Tutorial hast du viele Möglichkeiten gelernt, wie man mit while
Schleifen arbeitet, um flexiblere und leistungsstärkere Skripte zu erstellen.
Mit diesem neu gewonnenen Wissen ist alles möglich. Warum also nicht die Verwendung von logischen Operatoren und Schlüsselwörtern maximieren, um Aufgaben mit deinen Skripten zu automatisieren?