So debuggen Sie ein PowerShell-Skript

0
362

Jede Skriptentwicklung erfordert normalerweise eine Fehlerbehebung, die normalerweise zu einem von zwei Ansätzen führt. Entweder setzen Sie Variablen manuell auf Werte und geben diese Daten aus, wenn das Skript ausgeführt wird, oder verwenden Sie das Debugging, um Haltepunkte zu setzen, um Daten zu überprüfen, bevor Sie fortfahren oder abbrechen. In PowerShell ISE und Visual Studio Code ist die Möglichkeit zum Debuggen integriert.

Wie funktioniert das PowerShell-Debugging?

Die in Windows PowerShell enthaltene PowerShell ISE ist die traditionelle Go-to-Umgebung zum Debuggen von PowerShell-Skripts. Mit einem integrierten Menü zum Debuggen und einer grafischen Darstellung von Breakpoints ist der Einstieg einfach. Zuerst muss jedes Skript, das Sie debuggen, gespeichert werden. Als nächstes müssen Sie Breakpoints auf eine von drei Arten setzen.

  • Benutzen Sie in der fokussierten Zeile die F9-Taste, um einen Breakpoint zu setzen.
  • Klicken Sie mit der rechten Maustaste neben a Zeile und wählen Sie Toggle Breakpoint, um einen Breakpoint zu setzen.
  • Verwenden Sie Set-PSBreakPoint, um eine Zeile, Variable, Funktion oder übereinstimmenden Text anzugeben.

Sobald Sie einen Breakpoint gesetzt haben, können Sie einfach mit dem Debuggen beginnen, indem Sie das Skript mit F5 oder Debug → Run/Continue ausführen. Sobald das Skript den angegebenen Haltepunkt erreicht, wird die Ausführung angehalten und Sie müssen eine der folgenden Aktionen ausführen.

  • Überschreiten – Führen Sie nur die aktuelle Anweisung aus und stoppen Sie vor der nächsten Anweisung. Wenn die aktuelle Anweisung eine Funktion oder ein Skript ist, führen Sie den gesamten Aufruf aus, bevor Sie ihn stoppen.
  • Eintreten – Führen Sie ähnlich wie bei Step Over nur die aktuelle Anweisung aus und stoppen Sie vor der nächsten Anweisung. Anstatt die gesamte Funktion oder das Skript auszuführen, falls aufgerufen, treten Sie in den Aufruf ein.
  • Aussteigen– Wenn Sie sich innerhalb einer Funktion befinden, gehen Sie eine Ebene nach oben und nach oben, wenn die Funktion verschachtelt ist. Im Hauptskript bis zum Ende des Skripts oder zum nächsten Haltepunkt ausführen, je nachdem, was zuerst eintritt. Übersprungene Anweisungen werden ausgeführt, aber nicht durchlaufen.

Wenn das Skript an einem Haltepunkt angehalten wird, können Sie mit dem Mauszeiger über eine Variable fahren und die Werte einer bestimmten Variablen sehen. Darüber hinaus können Sie die Befehlszeile auch verwenden, um Variablen auszugeben, um den aktuellen Status anzuzeigen. Diesbezüglich gibt es einige Vorbehalte. $_, $Input, $MyInvocation, $PSBoundParameters und $Args funktionieren nicht, da es sich um automatische Variablen handelt und kein Debugging unterliegt. Eine Möglichkeit, diese Werte abzurufen, besteht darin, sie einer Zwischenvariablen zuzuweisen, die dann für einen Haltepunkt festgelegt werden kann.

PowerShell-Debugging in Visual Studio Code

Ähnlich der Funktionsweise der PowerShell ISE fügt Visual Studio Code mehrere sehr nützliche Debugging-Optionen hinzu. Darüber hinaus können Sie mit VS Code problemlos mit PowerShell 7.x debuggen, während die ISE traditionell auf Windows PowerShell beschränkt ist. Mit denselben Tastenbefehlen wie bei der PowerShell ISE können Sie schnell mit dem Debuggen beginnen. Noch besser ist, dass Sie jetzt einen Debugging-Bereich in VS Code haben, der einen Großteil der Variablenausgabe konsolidiert und das Anzeigen einer Momentaufnahme aller Variablenwerte in Ihrem Code einfacher macht.

Verwenden von VS Code-Debugging

Genau wie bei der PowerShell ISE können Sie mit F5 eine interaktive Debugging-Sitzung starten. Im Gegensatz zur ISE bietet VS Code ein viel besseres und nützlicheres Debugging-Erlebnis. Sie erhalten nicht nur die traditionelle Debug-Konsole, die durch die [DBG]-Eingabeaufforderung angezeigt wird, sondern Sie haben auch alle bekannten Variablen und deren Ausgabe im linken Debug-Fenster. Um die Navigation in den Debug-Optionen zu verbessern, macht die obere Debug-Leiste das Betreten, Verlassen und Überschreiten von Haltepunkten sehr einfach. Außerdem müssen Sie vor dem Ausführen nicht speichern!

Damit dies problemlos funktioniert, ist die PowerShell-Erweiterung von VS Code erforderlich.

Verwenden der Befehle zum Debuggen von Befehlen

< p>Obwohl das Debuggen ausschließlich von der Befehlszeile aus manchmal nicht die einfachste Operation ist, können Sie dies mit den integrierten Debugging-Befehlen tun. Es gibt ein paar eingebaute Befehle, um dies zu vereinfachen.

  • Set-PSBreakPoint – Legen Sie einen Haltepunkt fest, der bei einer bestimmten Zeile, einem bestimmten Befehl oder einer bestimmten Variablen ausgelöst wird.
  • Get-PSBreakPoint – Rufen Sie einen bestimmten Haltepunkt nach ID ab oder listen Sie alle Haltepunkte auf.
  • Remove-PSBreakPoint – Entfernen Sie einen bestimmten Haltepunkt.
  • Disable-PSBreakPoint – Einen Haltepunkt vorübergehend deaktivieren, aber nicht entfernen.
  • Enable-PSBreakPoint – Aktivieren Sie einen zuvor deaktivierten Breakpoint.

Mit dem vielseitigen Set-PSBreakPoint können Sie schnell einen Breakpoint setzen, der Sie nach dem Drücken in die Debug-Eingabeaufforderung bringt. An diesem Punkt können Sie mit den Standardtastenkombinationen schnell Variablen überprüfen und die Ausführung an diesem Punkt fortsetzen oder unterbrechen.

Schlussfolgerung

Debuggen muss nicht schwierig sein und sobald Sie mit einer der oben genannten Methoden damit begonnen haben, werden Sie feststellen, dass es für Ihre Skriptentwicklungsanforderungen unverzichtbar ist. Sehen Sie sich noch heute an, wie Sie mit dem PowerShell-Debugging beginnen können!