IT

PowerShell: Exit, Break, Return – PowerShell-Skripte beenden

Die meisten Leute werden den Befehl „Exit“ in PowerShell verwenden, um ein laufendes Skript zu beenden. Wenn dein Skript jedoch lediglich Funktionen deklariert, die später in einer PowerShell-Konsole verwendet werden sollen, wirst du meist eher Return in den Definitionen dieser Funktionen verwenden wollen. Die Unterschiede zwischen Exit, Break und Return und wie du diese Befehle zum Beenden von Schleifen, Funktionen oder Skripten nutzt, erfährst du in diesem Artikel!

 

EXIT in PowerShell

Mit dem „Exit“-Befehl wird der aktuell laufende Kontext „verlassen“. Wenn du diesen Befehl aus einem PowerShell-Skript heraus aufrufst, wird das Skript beendet. Wenn du diesen Befehl in der PowerShell-Konsole eingibst wird das Fenster geschlossen.

Wenn eine Funktion den „Exit“-Befehl aufruft, wird der Kontext, in dem sie ausgeführt wird, verlassen. Wenn die Funktion also aus einem laufenden PowerShell-Skript heraus aufgerufen wird, wird das PowerShell-Skript beendet, z. B. so in einer While-Schleife:

Wenn dein PowerShell-Skript die Funktion jedoch nur deklariert, damit sie von der aktuellen PowerShell-Konsole aus verwendet werden kann, und du die Funktion von der PowerShell-Konsole aus manuell ausführst, wird die aktuell genutzte PowerShell-Konsole beendet, in dem die Funktion, die den „Exit“-Befehl enthält, ausgeführt wird.

 

EXIT bei Aufruf des PowerShell-Skripts

Wenn man mit der rechten Maustaste auf ein PowerShell-Skript klickt, um es in PowerShell auszuführen, wird die PowerShell-Konsole standardmäßig automatisch geschlossen, sobald das Skript ausgeführt wurde. Dies hat nichts mit dem „Exit“-Befehl oder etwas anderem in deinem Skript zu tun. Es handelt sich lediglich um das Standardverhalten der PowerShell für Skripte, die so aufgerufen und abgearbeitet werden. Das Gleiche gilt für Batch-Dateien und das Befehlszeilenfenster. Wer nicht möchte, dass sich das PowerShell-Fenster nach Durchlauf des Skriptes automatisch schließt, findet hier eine ausführliche Anleitung.

Wenn das PowerShell-Skript z. B. als Task in der Aufgabenplanung laufen soll oder immer über Rechtsklick aufgerufen wird, braucht man sich über den „Exit“-Befehl eigentlich keine Gedanken machen, da man das PowerShell-Skript nicht damit beenden muss! Auch aus einer Schleife heraus muss man ein PowerShell-Skript normalerweise nicht vorzeitig komplett beenden, wenn man die Parameter für die Schleife korrekt definiert.

 

RETURN in PowerShell

Durch den Befehl „Return“ kehrt man in der PowerShell zum vorherigen Aufrufpunkt zurück. Wenn man diesen Befehl aus einem PowerShell-Skript (außerhalb von Funktionen) aufruft, kehrt man zur PowerShell-Konsole zur Eingabe neuer Befehle zurück.

Wenn du den „Return“-Befehl in einer PowerShell-Konsole eingibst, kehrst du einfach nur dorthin zurück und kannst weitere Befehle eingeben. Wenn du diesen Befehl aus einer Funktion heraus aufrufst, kehrst du dorthin zurück, von wo aus die Funktion aufgerufen wurde. Das sieht dann beispielsweise so aus:

Die Ausführung aller Befehle nach dem Aufrufpunkt, zu dem die PowerShell zurückkehrt, wird dann fortgesetzt. Allerdings wäre dies auch der Fall, wenn man den „Return“-Befehl in der Funktion einfach weglässt.

Wenn ein PowerShell-Skript aus der PowerShell-Konsole aus aufgerufen wird und den „Return“-Befehl außerhalb von Funktionen enthält, werden bei der Rückkehr zur PowerShell keine weiteren Befehle mehr ausgeführt, so dass der „Return“-Befehl in diesem Fall das gleiche Ergebnis zur Folge hat wie Exit.

Bei einer Schleife funktioniert das hingegen nicht und der Code nach der durch Return „verlassenen“ Schleife wird nicht mehr ausgeführt:

 

Werte mit RETURN zurückgeben

Wie auch in anderen Programmiersprachen kann man mit Return Werte zurück- bzw. auf der Konsole ausgeben, z. B. so:

 

BREAK in PowerShell

Der „Break“-Befehl bricht Schleifen und Switch-Cases ab. Wenn du diesen Befehl aufrufst, während du dich nicht in einer Schleife oder einem Switch-Case befindest, wird das komplette PowerShell-Skript abgebrochen. Wenn du Break innerhalb einer Schleife aufrufst, die in einer anderen Schleife verschachtelt ist, wird nur die „innere“ Schleife verlassen, in welcher der „Break“-Befehl aufgerufen wurde.

 

Label in Schleifen

Eine weitere interessante Funktion von Break besteht darin, dass man einer Schleife ein Label voranstellen kann. Dann kannst du diese „äußere“ Schleife auch dann verlassen, wenn der „Break“-Befehl innerhalb der inneren Schleife aufgerufen wird:

 

Tobias Langner

Tobias Langner

Ich arbeite seit mehreren Jahren als Software-Release-Manager, zuvor als IT-Administrator, bin ausgebildeter Fachinformatiker für Systemintegration und Studium-"Pausierer" an der FernUni Hagen. Achtung: Für die Richtigkeit der zur Verfügung gestellten Informationen, Skripte, etc. übernehme ich keine Gewähr. Deren Nutzung geschieht ausdrücklich auf eigene Gefahr!

Alle Beiträge ansehen von Tobias Langner →

2 Gedanken zu “PowerShell: Exit, Break, Return – PowerShell-Skripte beenden

    1. Hallo Frank,

      schön von dir zu hören, die Welt ist echt sehr klein 😉
      Es freut mich, dass mein Artikel dir geholfen hat.

      Viele Grüße
      Tobi

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert