Die PowerShell bietet eine Vielzahl von Befehlen, die es ihren Nutzern ermöglichen, komplexe Aufgaben schnell und effizient auszuführen. Doch Luft nach oben ist immer. Die PowerShell Pro Tools erweitern die Entwicklungsumgebung für die Automatisierungssprache von Microsoft um einige spannende Funktionen. Besonders gut hat uns die beschleunigte Eingabehilfe gefallen.
Die PowerShell kann von Haus aus schon eine ganze Menge und Millionen von Administratoren und IT-Profis haben in den vergangenen Jahren ihre Automatisierungsaufgaben auf diese Technik umgestellt. Trotz vieler Versionen und immer neuer Features gibt es dennoch stets Verbesserungsmöglichkeiten, die insbesondere den Scripting-Profi interessieren. An dieser Stelle betreten die "PowerShell Pro Tools" von Ironman Software die Bühne und erweitern Visual Studio, Visual Studio Code und das ebenfalls von Ironman gelieferte PSScriptPad um einige interessante Zusatzfunktionen.
Spätestens nach dem Lesen des ersten Absatzes wird so mancher Administrator die Augenbraue hochziehen und die Frage stellen: Warum denn Visual Studio? Viele IT-Profis schreiben ihre PowerShell-Skripte mit einfachen Editoren wie Notepad oder Notepad++. Und wer sich häufiger mit dem Thema auseinandersetzt, stößt auf ein kostenfreies Produkt von Microsoft, das erstmalig mit Windows PowerShell V2 eingeführt und in PowerShell V3 deutlich überarbeitet wurde: Windows PowerShell ISE. Deren wichtigsten Funktionen sind das mehrzeilige Bearbeiten durch Verwenden des weichen Zeilenumbruchs (Umschalttaste gleichzeitig mit der Eingabeaufforderung), das selektive Ausführen eines Skriptanteils durch Markieren mit anschließender F5-Taste oder die kontextbezogene Hilfe.PIC I
Tschüss ISE – hallo Visual Studio Code
Bis einschließlich Windows PowerShell V5.1 war und ist die ISE ein gängiges Werkzeug. Die aktive Feature-Entwicklung hat Microsoft allerdings eingestellt. Als in Windows enthaltene Komponente wird sie dennoch weiterhin offiziell mit Sicherheits- und Wartungsfixes hoher Priorität unterstützt. Zurzeit ist es laut Microsoft auch nicht geplant, die ISE aus Windows zu entfernen. Eine Unterstützung der PowerShell 6 oder höher bleibt der altgedienten ISE jedoch vorenthalten und der Hersteller empfiehlt die Verwendung von Visual Studio Code mit der entsprechenden PowerShell-Erweiterung.
Die PowerShell kann von Haus aus schon eine ganze Menge und Millionen von Administratoren und IT-Profis haben in den vergangenen Jahren ihre Automatisierungsaufgaben auf diese Technik umgestellt. Trotz vieler Versionen und immer neuer Features gibt es dennoch stets Verbesserungsmöglichkeiten, die insbesondere den Scripting-Profi interessieren. An dieser Stelle betreten die "PowerShell Pro Tools" von Ironman Software die Bühne und erweitern Visual Studio, Visual Studio Code und das ebenfalls von Ironman gelieferte PSScriptPad um einige interessante Zusatzfunktionen.
Spätestens nach dem Lesen des ersten Absatzes wird so mancher Administrator die Augenbraue hochziehen und die Frage stellen: Warum denn Visual Studio? Viele IT-Profis schreiben ihre PowerShell-Skripte mit einfachen Editoren wie Notepad oder Notepad++. Und wer sich häufiger mit dem Thema auseinandersetzt, stößt auf ein kostenfreies Produkt von Microsoft, das erstmalig mit Windows PowerShell V2 eingeführt und in PowerShell V3 deutlich überarbeitet wurde: Windows PowerShell ISE. Deren wichtigsten Funktionen sind das mehrzeilige Bearbeiten durch Verwenden des weichen Zeilenumbruchs (Umschalttaste gleichzeitig mit der Eingabeaufforderung), das selektive Ausführen eines Skriptanteils durch Markieren mit anschließender F5-Taste oder die kontextbezogene Hilfe.PIC I
Tschüss ISE – hallo Visual Studio Code
Bis einschließlich Windows PowerShell V5.1 war und ist die ISE ein gängiges Werkzeug. Die aktive Feature-Entwicklung hat Microsoft allerdings eingestellt. Als in Windows enthaltene Komponente wird sie dennoch weiterhin offiziell mit Sicherheits- und Wartungsfixes hoher Priorität unterstützt. Zurzeit ist es laut Microsoft auch nicht geplant, die ISE aus Windows zu entfernen. Eine Unterstützung der PowerShell 6 oder höher bleibt der altgedienten ISE jedoch vorenthalten und der Hersteller empfiehlt die Verwendung von Visual Studio Code mit der entsprechenden PowerShell-Erweiterung.
Alternativ können Administratoren oder Entwickler auch die kostenfreie Community-Variante von Visual Studio verwenden. Je nachdem, ob sie mit weiteren Programmiersprachen konfrontiert sind, ist das möglicherweise sogar die bessere Wahl. Die größte Ähnlichkeit der Produkte liegt jedoch nur im Namen: Visual Studio und Visual Studio Code. Sie teilen sich noch die automatische Vervollständigung von Eingaben, bei Microsoft als IntelliSense benannt. Ansonsten haben die beiden Programme nicht viel miteinander zu tun – Visual Studio Code ist ein quelltextbasierter Editor, während Visual Studio eine projektbasierte, voll ausgebaute Entwicklungsumgebung darstellt. Wer nur den aktuellen Microsoft-Editor für die neuesten PowerShell-Versionen benötigt, ist bei Visual Studio Code an der richtigen Adresse.
Funktionen teils kostenfrei erhältlich
Die PowerShell insgesamt unterstützt die Automatisierung von Aufgaben und die Verwaltung von Systemen durch die Verwendung von Skripten und Modulen und ist seit geraumer Zeit plattformübergreifend verfügbar. Neben dem eigenen Betriebssystem Windows und Apples macOS hat Microsoft die PowerShell auch auf verschiedene Linux-Distributionen gebracht. Insgesamt ist sie ein äußerst nützliches Tool für Systemadministratoren und Entwickler, das es ermöglicht, komplexe Aufgaben schnell und effizient zu erledigen und die Arbeit zu automatisieren. Und Ironman Software schickt sich an, dies noch weiter zu veredeln.
Ironman Software PowerShell Pro Tools 5.7.18
Produkt
Funktionserweiterung zur Erstellung von PowerShell-Skripten.
Der monatliche Preis beträgt je Lizenz rund 12 Euro. Eine unbefristete Lizenz kostet inklusive Wartung und Support für ein Jahr etwa 113 Euro.
Systemanforderungen
Visual Studio Community, Pro oder Enterprise 2017, 2019, 2022 oder Visual Studio Code, Windows PowerShell v5.1, PowerShell 7.0 bis 7.2, .NET 4.7.2. Die Funktion "Packaging" benötigt ferner .NET Core 3.1 oder höher, .NET 5.0, sofern PowerShell 7.1 oder höher genutzt wird, und mindestens das .NET 4.6.2 Developer Pack.
Die Produkte von Ironman erwirbt ein Käufer typischerweise direkt über den Webstore des Anbieters – entweder als monatliche oder als unbefristete Lizenz. Die unbefristete erlaubt, wie der Name bereits vermuten lässt, eine dauerhafte Nutzung – lediglich Aktualisierung und Wartung ist auf den gewählten Wartungszeitraum begrenzt.
Einen Teil der Funktionalitäten des PowerShell-Tools können Interessenten auch ohne den Zusatz "Pro" als kostenfreie Variante nutzen. Erst durch die Aktivierung des Lizenzcodes für die Pro-Version sind jedoch alle Möglichkeiten freigeschaltet. An dieser Stelle fiel uns bei der Betrachtung auf, dass die Webseite des Herstellers diesbezüglich widersprüchliche Aussagen trifft. Die "C# to PowerShell Code Conversion" ist im Funktionsvergleich noch als Pro-Feature enthalten und in einem über eineinhalb Jahren alten Blog-Eintrag heißt es, dass die Erweiterung für C#-Funktionalitäten bereits als frei verfügbares Modul mit dem Namen "CodeConversion" angeboten wird.
Bild 1: Die PowerShell Pro Tools für Visual Studio Code lädt der Administrator ganz einfach über den Marketplace herunter.
Installation mit Abhängigkeiten
Für das kostenfreie Visual Studio Code bietet die Pro Tools Erweiterung in erster Linie die Funktionen Script Packaging, Windows Form Designer, Variable Explorer, Form Generator, One-Click Attach, Code Conversion, Profiling und RapidSense. Wer mit der Pro-Version arbeiten möchte, beginnt mit der Anmeldung mit einem eigenen Account auf der Webseite und kauft entweder gleich eine Lizenz oder nutzt die angebotene Trial-Version.
Das Einrichten der Erweiterung gestaltet sich recht einfach. Sofern noch kein Visual Studio Code (kurz VS Code) auf dem PC installiert ist, beginnt der erste Schritt mit der Installation nach dem Download des nicht einmal 90 MByte großen Installers. Die Einrichtung ist selbsterklärend und dürfte den IT-Profi vor keinerlei Herausforderung stellen. Etwaige Abhängigkeiten in Bezug auf .NET erledigt der Installer gleich mit. Nach dem ersten Start des Editors gilt es für den Administrator, die Erweiterung "PowerShell for Visual Studio Code" hinzuzufügen.
Erweiterungen installieren Anwender entweder über die Auswahl einer entsprechenden bereits heruntergeladenen Datei oder, deutlich bequemer, direkt über Onlineressourcen wie den "Marketplace". Hierzu klickten wir in der linken Menüleiste auf "Extensions", symbolisiert durch vier ineinandergreifende Kästchen, und gaben in der Suchleiste "PowerShell" ein. Anschließend mussten wir lediglich das Paket auswählen und im Vorschaufenster auf "Install" klicken.
Nach diesem Schritt ist VS Code in der Lage, auch PowerShell-Skripte ordnungsgemäß zu erstellen. Im linken Menü entdeckten wir hier den entsprechenden Eintrag der Extension mit der Bezeichnung "PowerShell". Wird diese Erweiterung aktiviert, bildet sich am unteren Fensterrand eine Struktur mit den Einträgen "Problems", "Output", "Debug Console" und "Terminal". Letzteres ist ein Ausgabefenster. Nicht anders als mit der ISE gibt die Eingabe von
gefolgt von einem Druck auf die F5-Taste die Liste der aktuell aktiven Dienste des lokalen PCs aus. Fuhren wir mit dem Mauszeiger über einen Ausdruck, beispielsweise "get-service", gab VS Code einen Infotext aus, der die Syntax, Schalter und Erweiterungen anzeigt. Schon während der Eingabe des Befehls zeigt sich die positive Unterstützung durch IntelliSense.
Die Installation der Erweiterung für die PowerShell Tools Pro verläuft ähnlich: Erneut den Marketplace ansurfen, nun jedoch nach "PowerShell Pro Tools" suchen und wieder auf "Install" klicken. Zur Installation einer bereits als Datei heruntergeladenen Lizenz ist anschließend in der oberen Suchleiste das Kommando "PowerShell Pro Tools: Install License Key" einzugeben. Danach gilt es, die Lizenzdatei zu selektieren und die Anzeige "Installed license PowerShell Pro Tools successful" abzuwarten. Das linke Seitenmenü wird durch die Installation wieder um einen Eintrag reicher und verbirgt die Erweiterungen.
Bild 2: Die Syntaxprüfung mittels PSScriptAnalyzer mahnt eine ordnungsgemäße Skripterstellung an und stellt so eine bessere Qualität sicher.
Schnelle Automatisierung von Visual Studio Code
Die erste Erweiterung betrifft VS Code selbst – sprich die Automatisierung von sich wiederholenden Aktionen wie die Bearbeitung von Dokumenten oder die Anzeige von Informationen. Mit dem Kommando
öffnet VS Code beispielsweise das benannte Dokument direkt als weitere Datei zur Bearbeitung als eigenes Register. Erwartungsgemäß entdeckten wir auch Befehle, um den Inhalt des Dokuments, der soeben in VS Code geöffnet wurde, einzulesen oder Teile des Texts zu bearbeiten:
Ebenso unkompliziert erlaubt ein weiterer Befehl die Ausgabe einer Information oder eines Fehlertextes innerhalb von VS Code. Mithilfe von
Show-VSCodeMessage -Message 'Fertig' -Type Information
lässt sich der Administrator beispielsweise eine kurz erscheinende Informationsblase am unteren rechten Fensterrand einblenden. Die etwas weiterführende Variante des Befehls wäre in diesem Fall:
Show-VSCodeMessage -Message 'Was sollen wir tun?' -Items @('Weitermachen', 'Hinlegen')
Es erscheint eine Auswahl für den Benutzer in VS Code, die die beiden Optionen "Weitermachen" oder "Hinlegen" anbietet. Die gewählte Option wird an das Terminal übermittelt und lässt sich vom Entwickler zur weiteren Verarbeitung nutzen.
Hilfreiche Prüfung der Code-Qualität
In den Tiefen der Erweiterung wirkt derPSScriptAnalyzer und macht den Admin auf kleine Ungereimtheiten bei der Skript-erstellung aufmerksam. Wir verwendeten im Zuge unserer Testbetrachtung zum Beispiel das altgediente Kommando cls, um die Ausgabe im Terminalfenster zurückzusetzen. Hierbei handelte es sich um die pure Macht der Gewohnheit und diese hatten die Entwickler bei Microsoft auch auf dem umgangssprachlichen Schirm, da es sich nunmehr um einen Alias des Befehls Clear-Host handelt.
Beim Aufruf eines Skripts mit dem Befehl cls läuft dieses, wie erwartet, korrekt durch. Jedoch zeigt sich im Register "Problems" im Ausgabebereich nun ein kleiner grauer Kreis mit einer "1". Öffnet der Anwender die "Problems"-Übersicht, erscheint ein Erläuterungstext, warum es eine gute Idee wäre, diese Codezeile anders zu gestalten. Praktischerweise muss der Entwickler an der Stelle nicht wieder selbst zur Tastatur greifen, sondern klickt einfach mit der rechten Maustaste auf den Eintrag und nimmt den Anpassungsvorschlag an. Die Prüfung ist nicht nur auf die Syntax oder Qualität der Befehle limitiert, auch ungenutzte Variablen merkt die Überwachung an.
Bild 3: Praktisch: Ein als EXE-Datei paketiertes PowerShell-Skript.
Praktische Verwandlung in ausführbare Datei
Eine der Hauptfunktionalitäten der PowerShell Pro Tools ist die Möglichkeit, aus einem PowerShell-Skript ein eigenständig arbeitendes Executable zu erstellen. Diese Funktion nennt sich "Packacking" und ist direkt über das grafische Menü für den Administrator nutzbar. Wer bisher bei den Systemvoraussetzungen nicht genau hingeschaut hat, erntet nun einen Fehlertext im Terminal – die Installation des kostenfreien .NET Core SDK ist für die Funktionalität zwingend erforderlich.
Der Paketierungsprozess selbst ist technisch zweigeteilt, jedoch ist das für den Benutzer so lange unmerklich, sofern das SDK auf dem Computer verfügbar ist. Die aktuell bearbeitete PS1-Datei wird nach dem Mausklick auf "Package Script as Exe" im aktuellen Arbeitsverzeichnis in eine Datei mit der Bezeichnung "package.psd1" gewandelt. Diese ließe sich, sofern gewünscht, hinsichtlich ihrer Optionen anpassen. Der Aufbau des "Config File Schema" ist auf der Webseite des Herstellers erläutert und umfasst beispielsweise Eigenschaften wie Dateiversion, Produktname, Copyright-Einträge, Pfadangaben, Name des Dienstes, sofern anwendbar, oder es gilt festzulegen, ob das Konsolenfenster sicht- oder unsichtbar sein soll.
Die Dokumentation beschreibt ebenfalls, was der Administrator zu tun hat, wenn es sich bei dem Paketierungsvorgang um eine umfangreichere Sammlung von Skripten in einem Ordner handelt. Ein package.psd1-File kann in diesem Zusammenhang auch als Vorlagendatei zum Einsatz kommen. Die Verwendung der Paketierung ist nicht nur auf einfache Windows-Vorgänge beschränkt. Unter Windows erlaubt die Software das Erstellen von Services beziehungsweise Diensten auf Basis von PowerShell-Skripten. Im Zusammenspiel mit dem .NET Core SDK 3.1 oder höher und PowerShell 7 ist ein Paketierungsvorgang für macOS und Linux möglich. Praktischerweise umfasst das Paket alle erforderlichen Komponenten, sie müssen auf dem später ausführenden Zielsystem nicht explizit nachinstalliert werden.
In unserem Test gelang die Umwandlung von einem einfachen .PS1-Skript zu einer ausführbaren Datei mit wenigen Mausklicks. In dem neu gebildeten Ordner "Out" in unserem Arbeitsverzeichnis entstanden neben der eigentlichen "test.exe" zwei DLL-Dateien, eine CONFIG-Datei und eine PDB-Datei. Schlussendlich mutiert ein Zweizeiler in der PowerShell zu einem Verzeichnis mit fünf Dateien und insgesamt 6,25 MByte Speicherplatzbedarf. Die Verwendung des erstellten Programms auf aktuellen Windows-Versionen gelang ohne Probleme. Ältere Systeme, in unserem Fall eine Windows-7-Maschine, brachten aber die Fehlermeldung hervor, dass eine Abhängigkeit nicht erfüllt werden konnte.
Entwickeln per grafischer Oberfläche
Wie bei all ihren direkten Vorläufern – Batch und VB-Script – waren die Entwickler der PowerShell der Meinung, dass eine grafische Oberfläche nicht erforderlich sei. Wer sich zurückbesinnt, wird sich noch erinnern, dass ursprünglich eine grafische Oberfläche für Exchange infrage gestellt wurde und eine ausschließliche Bedienung über eine PowerShell-artige Struktur auf der Agenda stand.
Letztendlich kam es anders und Windows und die Oberflächen der verschiedenen Applikationen sind der grafische Anteil, der sich mithilfe der PowerShell automatisiert und skriptbasiert steuern lässt. Eine zwingende Notwendigkeit der direkten Nutzung grafischer Elemente aus dem "User Interface" gibt es, zumindest aus der Sicht von Microsoft, somit nicht. Wer aber Konfigurations- oder Einrichtungsvorgänge mit der PowerShell realisiert, wünscht sich hier und da die Möglichkeit, mit dem Anwender in eine optisch ansprechende Interaktion treten zu können. Exakt dies haben die Entwickler von Ironman Software umgesetzt und liefern den Oberflächendesigner gleich mit. Es ist also nicht erforderlich, die Oberfläche, Schaltflächen, Menüs und sonstige Elemente von Hand per Eingabe zu definieren.
Bild 4: Die PowerShell Pro Tools erweitern Visual Studio um viele Funktionen – hier zu sehen die Aufschlüsselung des Skripts in einem Syntaxbaum.
Der "Windows Forms Designer" ist wenig überraschend nur unter Windows verfügbar. Das Einbinden in VS Code ist recht einfach, da schlicht ein anderes Programm gestartet wird. Nach dem Anlegen einer neuen PS1-Datei führten wir die Befehlskombination STRG+SHIFT+P aus, um den Eintrag "Show Windows Forms Designer" in der Kommandozeile von VS Code zu erzeugen. Nach Bestätigung mit der Eingabetaste öffnet sich der "PSSCRIPTPAD" – ein ebenfalls dateibasierter Editor von Ironman, der jedoch um die Bearbeitung von Windows Forms erweitert ist. Wer schon einmal mit einer grafischen Programmierumgebung gearbeitet hat, dürfte sich hier sofort zurechtfinden. Das Programm ist an den Standarddesigner von Visual Studio angelehnt: Designoberfläche, Events, Steuer- und Formularelemente.
In unserem Test war es uns möglich, dank der eher spartanischen Onlinehilfe und der darin enthaltenden YouTube-Videos, eine grafische Oberfläche zu erstellen und mit Event-Aufrufen PowerShell-Kommandos aufzurufen. Ein wenig gewöhnungsbedürftig ist es schon, dass das Skript in diesem Fall über beide Entwicklungsumgebungen gleichzeitig geöffnet ist und der startende Aufruf während der Bearbeitungsphase wiederum nun in VS Code geschieht. Einen echten Punktabzug gibt es jedoch für das Fehlen der Funktion "Rückgängig".
Viele kleine Helferlein
Wer sich schon lange mit PowerShell-Scripting auseinandersetzt, kennt folgenden Handlungsstrang: Weitgehend ist sich der Admin sicher, dass das Skript so stimmt, legt jedoch – sofern in einer integrierten Entwicklungsumgebung – ein neues Register an, um die Datei dorthin zu kopieren, um sie auf einer anderen PowerShell auszuführen. Für diesen Anwendungsfall haben sich die Entwickler bei Ironman einen kleinen Helfer überlegt. Es findet sich in der Menüleiste eine kleine Schaltfläche, die das aktuelle Skript in einem separaten Terminalfenster zur Ausführung bringt.
Die Eingabehilfe IntelliSense bekommt beim Einsatz der PowerShell Pro Tools eine im Betrieb schneller reagierende Variante mit Namen RapidSense an die Seite gestellt. Der Geschwindigkeitszuwachs, so die Produktinformation, wurde durch den Verzicht auf einige IntelliSense-Funktionen erreicht. Grundsätzlich reagiert RapidSense ebenfalls auf die Eingaben der Zeichen ", . – [ \", erlaubt jedoch die Anpassung, dass bestimmte Assemblies, Typen, Module und Befehle zu ignorieren sind. Sollen beispielsweise alle System-Assemblys von der Typvervollständigung ausgeschlossen werden, wäre der Eintrag "System.*" erforderlich. Das Ignorieren von Einträgen sorgt schlussendlich für die bessere Leistung. Die Befehle können in den Skripten natürlich weiterhin zum Einsatz kommen, es wird nur die Autovervollständigung unterdrückt. Das Umstellen zwischen den beiden Anweisungsvervollständigungen geschieht durch einen Mausklick am unteren Fensterrand in VS Code – die Software wechselt zwischen den beiden Modi hin und her.
Auf der linken Menüseite entdeckten wir daneben verschiedene Explorer-Elemente mit weiteren Informationen. Der "Host Process Explorer" gibt die aktiven PowerShell-Prozesse des lokalen Systems aus. Unterhalb der Prozesse listet die Software die so genannten Runspaces auf, die auf Mausklick vom Debugger zu überwachen sind. Der "Job Explorer" führt quasi Buch über den Status der Befehlsausführungen und der "Provider Explorer" hilft bei der Suche nach den passenden Eigenschaften und Pfadangaben.
Der "AST Explorer" ist so etwas wie der genaue Blick hinter die Kulissen der Software. In dem Syntaxbaum erscheint die zergliederte Struktur des PowerShell-Skripte, die als Basis für die Prüfungen dient. Mit einem Mausklick kann sich der Entwickler anzeigen lassen, an welchen Stellen in seinem Skript beispielsweise "StringConstantExpressions" zur Anwendung kommen.
Fazit
Alles in allem sind die PowerShell Pro Tools eine gelungene Mischung von Hilfs- und Unterstützungsfunktionen rund um die Skriptsprache. Für Administratoren und Entwickler, die oft mit der PowerShell arbeiten, stellen sie eine gelungene Hilfe und wertvolle Unterstützung dar. Wer sich allerdings nicht so oft in die Tiefen des Scriptings vorwagt, dürfte von diesen Bonusfunktionen wenig profitieren.
(ln)
So urteilt IT-Administrator
Bewertung
Einrichtung und Handhabung
6
Skriptkontrolle
7
EXE-Paketierung
8
Einbindung Windows Forms
7
Allgemeine Hilfsfunktionen
7
Dieses Produkt eignet sich
optimal
für Administratoren und Entwickler, die sich intensiv mit PowerShell-Scripting auseinandersetzen..
bedingt
für Admins, die lediglich fertige Skripte anwenden.