Beenden Sie manuell die Ausführung eines langen Skripts in PowerShell
- Häufige Ursachen für die Beendigung von Skripts in PowerShell
- Manuelles Beenden eines beendeten Skripts in PowerShell
Beim Ausführen von Skripten, insbesondere solchen mit langen Codezeilen und langen Ausführungszeiten, kann es vorkommen, dass Skripte anscheinend beendet werden und sich in einem hängenden Zustand befinden. In diesem Artikel werden häufige Ursachen erläutert, warum unsere Skriptausführung mittendrin stoppt und wie wir einen lange laufenden PowerShell-Prozess stoppen können.
Häufige Ursachen für die Beendigung von Skripts in PowerShell
Hier sind einige häufige Ursachen dafür, warum unser Skript beendet wird, während es in unserer PowerShell-Umgebung ausgeführt wird:
-
Mangel an Ressourcen
Der Mangel an Ressourcen auf einem Computer ist eine der häufigsten Ursachen dafür, dass die PowerShell-Ausführung mittendrin stoppt. Diese Situation tritt insbesondere auf, wenn Ihr Gerät oder Server mehrere Jobs oder Funktionen erfüllt und über weniger Ressourcen verfügt, als er bewältigen kann.
Prioritätsprozesse werden manchmal zuerst ausgeführt, und es kommt zu Unterbrechungen, wodurch das Skript auf halbem Weg angehalten wird. Manchmal konnte der Interpreter jedoch nicht von seiner Breakout-Leitung aus fortfahren, da alle hergestellten Verbindungen möglicherweise bereits geschlossen oder beendet wurden, was uns zu unserem folgenden Beispiel führt.
-
Verbindungszeitüberschreitung
Diese Situation tritt normalerweise auf, wenn unser Skript eine Datenbank oder Remoteverbindungen zu anderen Standorten wie beispielsweise einem Server enthält. Unser Skript braucht zu lange, um zu antworten, und manchmal kann PowerShell nicht feststellen, ob die Endverbindung geschlossen wurde oder nicht, sodass wir für einige Zeit in einem festgefahrenen Prozess zurückbleiben.
-
Visueller Fehler
Wenn wir PowerShell IDE verwenden, können wir auf einen der visuellen Fehler stoßen, bei denen, wenn wir auf das blaue PowerShell-Fenster klicken, während es ausgeführt wird, möglicherweise keine Meldungen angezeigt oder sein Status angezeigt werden, während das Skript ausgeführt wird. Technisch gesehen läuft das Skript also immer noch im Backend, aber in unserem Monitor kann es so aussehen, als ob die Skriptausführung schon seit geraumer Zeit angehalten wurde.
Manuelles Beenden eines beendeten Skripts in PowerShell
Wir können das Skript manuell stoppen, indem wir ein Interrupt-Signal an unseren Interpreter senden. Dies gilt für PowerShell und die meisten Skript- oder Programmiersprachen, die die Befehlszeile verwenden.
Hier sind einige der wenigen Beispiele für Interrupts:
- Strg+C sendet
SIGINT
, um die Anwendung zu unterbrechen. Dies führt normalerweise zu einem Abbruch, aber die Entscheidung darüber liegt bei der Anwendung. - Strg+Z sendet
SIGTSTP
an eine Anwendung im Vordergrund, wodurch es effektiv in den Hintergrund versetzt und angehalten wird. Dies ist nützlich, wenn wir aus so etwas wie einem Editor ausbrechen und einige Daten abrufen, die wir benötigen.
Wenn wir Cloud- oder webbasierte Terminals wie Azure Shell oder PowerGUI verwenden, funktioniert ein einfaches Refresh mit Cache mit Shift+F5 als Interrupt-Signal.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn