Getty Images
Do-While und Do-Until in PowerShell: Was ist der Unterschied?
PowerShell-Skripte verfügen über Schleifenoptionen, um die Automatisierung zu vereinfachen. Lernen Sie den Unterschied zwischen Do-While- und Do-Until-Schleifen kennen.
Als Skriptsprache bietet PowerShell verschiedene Schleifen zur Unterstützung bei Automatisierungsaufgaben. Das Verständnis von Do-Until-Schleifen im Vergleich zu Do-While-Schleifen ist wichtig, um sie effektiv nutzen zu können.
Die Do-Until- und Do-While-Schleifen unterscheiden sich syntaktisch nur durch die verwendeten Schlüsselwörter. Die Entscheidung zwischen den beiden kommt darauf an, wie die Schleife die Bedingung auswerten soll. Bei der Do-Until-Schleife wird die Schleife fortgesetzt, solange die Bedingung falsch ist. Bei Do-While wird die Schleife fortgesetzt, solange die Bedingung wahr ist. Wenn Sie das wissen, können Sie effizientere und einfachere Skripte schreiben.
Do-Until
Die Do-Until-Schleife in PowerShell dient der wiederholten Ausführung eines Codeblocks, bis eine bestimmte Bedingung erfüllt ist. Wie bei Do-While wird der Code einmal ausgeführt, bevor die Bedingung ausgewertet wird. Im Gegensatz zu Do-While muss die Bedingung auf false aufgelöst werden, damit der Code weiter ausgeführt werden kann.
In Abbildung 1 wird ein Dienst gestartet, und dann wartet die Schleife eine Sekunde lang, bevor sie prüft, ob der Status des Dienstes gleich Running ist. Wenn der Dienst nicht läuft, wird die Schleife erneut ausgeführt, bis der Dienst läuft.
Do-While
Die Do-While-Schleife in PowerShell ist ebenfalls dafür vorgesehen, einen Codeblock wiederholt auszuführen, bis eine bestimmte Bedingung erfüllt ist. Im Gegensatz zur Do-Until-Schleife wird die Do-While-Schleife jedoch fortgesetzt, solange die Bedingung true ist, und die Schleife wird erst beendet, wenn die Bedingung false ist.
Abbildung 2 ist dem Do-Until-Beispiel ähnlich, funktioniert aber anders. In diesem Fall tritt das Skript in die Schleife ein, schläft eine Sekunde lang und prüft dann, ob der angegebene Dienst läuft. Ist das der Fall, setzt es den Ruhezustand fort und verlässt die Schleife erst, wenn der Dienst beendet wird. Dieser Ansatz ist nützlich, wenn Sie einen Dienst überwachen müssen.
Vergleich mit der While-Schleife
Wie Do-Until und Do-While ist die While-Schleife so konzipiert, dass sie einen Codeblock so lange ausgeführt, bis die angegebene Bedingung erfüllt ist. Bei der While-Schleife wird die Bedingung ausgewertet, bevor irgendein Code ausgeführt wird. Daher ist es möglich, dass der Code innerhalb einer While-Schleife nie ausgeführt wird. Wenn der Code mindestens einmal ausgeführt werden soll, beginnen Sie entweder mit einer Do-Until- oder einer Do-While-Schleife.
Zusammenführen der drei Schleifen
Um die Unterschiede zwischen diesen drei Schleifen zu verdeutlichen, können wir sie alle in einem einfachen Skript für den Dienstmonitor kombinieren.
Im Beispiel in Abbildung 3 wird die While-Schleife so lange ausgeführt, bis das Skript angehalten wird, da $true immer als true ausgewertet wird. Die Do-Until-Schleife wartet, bis der Dienst startet, und die Do-While-Schleife wartet, bis er anhält. Sobald der Dienst angehalten wurde, beginnt der Prozess von neuem. Das ist eine einfache Möglichkeit, ein Skript auszuführen, das einen Dienst, der angehalten wird, kontinuierlich startet.