Tags: PowerShell, Tools
Visual Studio Code erlaubt die Ausführung von PowerShell in einem Terminal und bietet grundlegende Features wie die Syntaxhervorhebung. Ziemlich umständlich ist jedoch das Starten von Scripts oder Anweisungen aus dem Editor. Ich bespreche hier zwei Extensionen, die diese Situation verbessern.
Damit man eine ähnlich komfortable PowerShell-Umgebung erhält wie die ISE, sollte man die Visual Studio Code PowerShell Extension installieren. Sobald man die erste Datei mit der Endung .ps1 speichert, dann empfiehlt VSCode die Installation dieser Erweiterung. Hier müssen Sie dann nur mehr auf die Schaltfläche Installieren klicken.
Features der PowerShell-Extention
Die Extension kommt mit einem eigenen Terminal ("PowerShell Integrated Console"). Dieses können Sie alternativ oder ergänzend zu den Shells verwenden können, welche ich in diesem Beitrag beschrieben habe. Leider bietet diese Konsole aber keine Syntaxhervorhebung, anders als die integrierten VSCode-Terminals.
Im Editor können Sie Code durch Drücken der F8-Taste ausführen. Wenn Sie eine bestimmte Anweisung starten wollen, dann müssen Sie nur den Cursor in die betreffende Zeile setzen. Das ist praktisch, aber es gibt bessere Möglichkeiten, um Code-Abschnitte in VSCode auszuführen. Ich komme darauf weiter unten zurück.
IntelliSense zeigt die verfügbaren Optionen an, während Sie tippen, und wenn Sie mit der Maus über ein Cmdlet fahren, dann sehen Sie die Syntax für seine Verwendung.
Das automatische Vervollständigen über die Tab-Taste beschleunigt die Eingabe von Kommandos und Parametern (durch mehrfaches Drücken der Taste erhält man alle Optionen). Das funktioniert auch in der Konsole.
Der PowerShell Script Analyzer prüft die Qualität des Codes. Vermutlich werden Sie PSScriptAnalyzer anpassen wollen, weil die vorgegebenen Regeln zu streng sind, wenn Sie nur ein paar Code-Snippets auf der Konsole ausführen möchten.
Das lässt sich erledigen, indem Sie STRG + Umschalten + P betätigen und damit beginnen, "scriptan.." einzutippen. Wählen Sie dann PSScriptAnalyzer Rules und betätigen Sie die Eingabetaste. Nun haben Sie die Möglichkeit, Regeln zu aktivieren oder zu deaktivieren.
Die Erweiterung hat noch weitere nützliche Features für das Entwickeln von PowerShell-Scripts, die man auf der Web-Seite der Extension oder in der FAQ nachlesen kann. Sie können aber einfach nur STRG + Umschalten + P drücken und dann "PowerShell" eintippen, um mehr Funktionen zu entdecken. Ich möchte mich hier aber auf die Nutzung von VSCode als Konsole konzentrieren.
Ausgewählten Code im Editor starten
Der wichtigste Grund, warum ich eine Script-Umgebung gerne als Konsole nutze, besteht darin, dass man dort Anweisungen in den Editor tippen und gleich von dort ausführen kann. Das ist praktisch, wenn man ähnliche Kommandos oder verschiedene Versionen von Befehlen mehrmals am Tag benötigt. In diesem Fall wählt man einfach jene aus, die für die jeweilige Aufgabe am besten passt.
Ein weiterer Vorteil ist, dass man eine Anweisung einfach so lange ändern und verbessern kann, bis sie funktioniert. Und wenn ein Einzeiler nicht ausreicht, dann kann man hier gleich ein kleines Script erstellen.
Weiter oben habe ich erwähnt, dass die PowerShell-Erweiterung die Ausführung von Code erlaubt, indem man im Editor die F8-Taste drückt. Wenn Sie aber ein komplettes Script starten möchten, dann müssen Sie erst den ganzen Code markieren. PowerShell ISE verhält sich hier anders. Außerdem führt die Extension den Code immer in ihrem eigenen Terminal aus, das keine Syntaxhervorhebung kennt. Und schließlich ruft sie dazu immer Windows PowerShell auf, auch wenn man lieber PowerShell Core verwenden möchte.
Code ausführen ohne PowerShell-Erweiterung
Unglücklicherweise ist der in VSCode eingebaute Mechanismus zum Ausführen von Code ebenfalls etwas umständlich. Das lässt sich jedoch beheben. Aber lassen Sie mich erst beschreiben, wie das eingebaute Feature funktioniert.
Öffnen Sie zuerst eine neue Datei (STRG + N) und speichern sie (STRG + S). Wichtig ist dabei, dass der Name der Datei die Erweiterung .ps1 erhält, andernfalls erkennt VSCode nicht, dass es sich um ein PowerShell-Script handelt. Daher steht die Syntaxhervorhebung erst dann zur Verfügung, wenn die Datei gespeichert wurde.
Nun wählen Sie eines der PowerShell-Terminals aus und markieren im Editor den Code, der ausgeführt werden soll. Anschließend drücken Sie STRG + Umschalten + P und tippen "ausgewählten" ein. Jetzt erscheint die Auswahl Terminal: Ausgewählten Text im aktiven Terminal ausführen, die Sie noch bestätigen müssen.
Die Prozedur lässt sich beschleunigen, wenn Sie ihr eine Tastenkombination zuweisen. Der dafür zuständige Befehl befindet sich im Menü Datei unter Einstellungen.
Code ausführen mit Code Runner
Mit Hilfe der Extension Code Runner ist es viel komfortabler, Scripts oder Fragmente davon im Editor von VSCode zu starten. Um sie zu installieren, klicken Sie in der linken Navigationsleiste auf das Icon für Erweiterungen und tippen anschließend "code runner". Nach der Installation klicken Sie auf Neu starten.
Bevor ich darauf eingehe, wie sich Code Runner nutzen lässt, müssen wir seine Konfiguration ein bisschen anpassen. Standardmäßig führt diese Erweiterung den Code im Tab Ausgabe aus. Das ist ungünstig, wenn Sie ein interaktives Script starten wollen oder nach dem Ausführen eines Kommandos in der Konsole weiterarbeiten möchten.
Um Code Runner mitzuteilen, dass es PowerShell-Anweisungen im Terminal abarbeiten soll, müssen Sie die folgende Zeile in die Einstellungen von VSCode übernehmen. Vergewissern Sie sich, dass alle Einstellungen mit einem Komma abgeschlossen werden, so wie es der Screenshot weiter unten zeigt.
"code-runner.runInTerminal": true,
Um Code Runner anzuweisen, anstelle von Windows PowerShell die Core-Version zu verwenden, fügen Sie zusätzlich diese Zeilen in settings.json ein:
Wie Sie sehen, können Sie hier auch die Execution-Policy anpassen. Die Konfiguration sollte nun so aussehen, wie im folgenden Screenshot angezeigt.
Code Runner bietet mehrere Möglichkeiten, um Code aus dem Editor zu starten. Wie in der ISE lässt sich ein komplettes Script durch das Anklicken des Symbols Run Code oder durch die Tastenkombination STRG + ALT + N ausführen.
Im Unterschied zur ISE führt Code Runner aber die Version des Scripts aus, die Sie zuletzt gespeichert haben und nicht jene, die Sie im Editor sehen. Außerdem verwendet die Extension ihr eigenes Terminal.
Wenn Sie nur ausgewählten Code starten wollen, dann klicken Sie mit der rechten Maustaste in den markierten Abschnitt und führen aus dem Kontextmenü den Befehl Run Code aus. Alternativ führt nach dem Markieren des Codes die Tastenkombination STRG + ALT + N zum gleichen Ziel. Um die Ausführung zu beenden, kann man STRG + ALT + M betätigen.
Code Runner bietet noch eine ganze Reihe von Einstellungen, die den Rahmen dieses Beitrags sprengen würde. Sie können diese in der Datei package.json unter Windows im Verzeichnis
$env:UserProfile\.vscode\extensions\formulahendry.code-runner-0.9.3
finden. Unter macOS und Linux lautet der Pfad für die Erweiterungen ~/.vscode/extensions.
Um eine Einstellung zu ändern, müssen sie nicht package.json editieren. Vielmehr reicht es, diese in die Einstellungen von VSCode zu übernehmen und die Konfiguration dort anzupassen.
Fazit
Der Nachteil von Code Runner besteht darin, dass es Kommandos nur in seinem eigenen Terminal ausführen kann. Daher müssen Sie sich entscheiden, ob sie Windows PowerShell oder PowerShell Core verwenden möchten.
Die PowerShell-Extension hat die gleichen Beschränkungen und ihre Konsole unterstützt keine Syntaxhervorhebung. Das eingebaute Feature zum Ausführen von Code schließlich hat den Vorteil, dass es den Code im aktiven Terminal startet, aber dafür muss man ihn immer erst markieren.
Aus diesem Grund arbeite ich normalerweise mit Code Runner und verwende das eingebaute Feature nur, wenn ich Code in einer anderen als der Standard-Shell ausführen möchte. Das bedeutet natürlich nicht, dass die PowerShell-Extension überflüssig ist. Sie bietet sehr nützliche Funktionen im Editor.
Auch wenn ich hier nur an der Oberfläche geblieben bin, so sollte doch deutlich geworden sein, dass VSCode wesentlich mächtiger ist als die ISE. Nachdem PowerShell Core die Zukunft gehört, würde ich Sie ermuntern, auf sie umzusteigen und dabei auch gleich auf VSCode zu wechseln. Sie ist die perfekte Umgebung, beide Versionen von PowerShell parallel zu nutzen.
Täglich Know-how für IT-Pros mit unserem Newsletter
Michael Pietroforte verfügt über 30 Jahre Erfahrung in IT-Projekten, ist seit fünf Jahren Microsoft MVP Windows IT Pro und Betreiber der Website 4sysops für IT Professionals.
Verwandte Beiträge
- Pfad zu einer Programmdatei finden
- ScriptRunner Portal Edition R4: Support für Microsoft Graph, überarbeitetes Portal, zentrale Execution-Policy
- PowerShell-Scripts kompilieren mit Win-PS2EXE
- WSUS Automated Maintenance im Test: Updates ablehnen und entfernen, Datenbank und IIS optimieren
- Visual Studio Code (VSCode) als Konsole für PowerShell nutzen
Weitere Links
2 Kommentare
Wie sieht es beim Script erstellen mit der Autovervollständigung aus, wenn ich CMDlets von Serveranwendungen benutzen will? VSCode habe ich ja lokal auf meinem Rechner. Wenn ich jetzt aber ein Server Script schreiben möchte und zB auf CMDlets des DC zugreifen will, sind die lokal ja nicht vorhanden. Genauso sieht es ja auch mit der Exchange Management Shell aus. Geht das?
Die Konsole in VSCode verhält sich genauso wie die Konsole von Windows PowerShell oder PowerShell Core, denn die Konsole wird ja nur in VSCode integriert. Autovervollständigung funktioniert also auch dann, wenn man mit Implicit Remoting arbeitet.