Die neue Version 7 der Powershell führt eine ganze Reihe von Funktionen ein, die Windows-Verwender bereits von der dort im Standard installierten Windows Powershell 5.x kennen. Dabei hat der Hersteller selbst für einen gewissen Feature-Boost gesorgt, indem er darauf geachtet hat, dass die in Windows mitgelieferten Powershell-Erweiterungsmodule nun auch unter Powershell 7 lauffähig sind.
Das offensichtliche Ziel der Entwickler besteht darin, die Powershell 7 zur Feature-Parität mit der Windows Powershell zu bringen. Von der haben Linux- und macOS-Nutzer nichts und selbst Windows-Nutzer müssen bislang noch auf rund 100 Befehle verzichten.
Das ist die Powershell 7
Die Powershell 7 ist der Nachfolger der Powershell Core 6. Die wiederum war der erste Versuch Microsofts, eine Shell anzubieten, die nicht nur unter Windows, sondern auch unter diversen Linux-Derivaten sowie unter macOS funktionieren sollte.
Der Gedanke war nicht schlecht. Über eine Shell, also eine Scripting-Umgebung nebst Kommandozeileninterpreter (CLI), sollen komplexe Systemprozesse Betriebssystem-agnostisch abgebildet werden können. So einfach ist die Sache allerdings nicht. Und das musste auch Microsoft erkennen. Dabei sieht sich der Hersteller mit mehreren Problemen konfrontierte.
Zunächst setzte Microsoft im 2018er Release der Powershell 6, anders als bei der seit 2006 etablierten Windows Powershell, auf .NET Core anstelle des .NET-Frameworks. Die Entscheidung war folgerichtig, weil das .NET-Framework nicht unter Linux und macOS läuft. Fakt ist aber auch, dass .NET Core weit weniger Basisklassen integriert und damit weit weniger Funktionen bieten kann, als in der Windows Powershell vorhanden sind.
Das nächste Problem besteht darin, dass es kaum ein plattformübergreifendes Scripting geben kann, sobald Systemprozesse beteiligt sind. Denn die dafür erforderlichen Module gehören typischerweise nicht zur Shell, sondern zum Betriebssystem, wo sie jeder Hersteller so umsetzt, wie es ihm sinnvoll erscheint. So könnten sogar durchaus gleiche Funktionen in allen von der Powershell unterstützten Betriebssystemen vorhanden sein. Sobald diese Module anders angesprochen werden müssen, ist der übergreifende Ansatz gescheitert.
Neuer Anlauf mit Powershell 7
Nachdem sich die Powershell 6 Core kaum durchzusetzen wusste, will Microsoft nun mit der Powershell 7 einen neuen Anlauf wagen. Dazu verzichtet der Hersteller auf den Namenszusatz Core, der den einen oder anderen, der sich mit der 6er Version auseinandergesetzt hatte, möglicherweise negativ triggern könnte.
Zudem versucht Microsoft der Powershell 7 weitere Funktionen einzuhauchen – vornehmlich solche, die die Windows Powershell 5.x bereits seit langem hat. Dabei von Erfolg zu sprechen, wäre allerdings übertrieben. Um das zu beurteilen, reicht ein simpler Vergleich:
Im Einsatz unter Windows unterstützt die Powershell 7 einen Satz von rund 1.500 Befehlen. Beim Einsatz unter Linux und macOS schrumpft dieser Satz auf unter 300 Befehle zusammen. Dazu kommt noch, dass Powershell 7 unter Windows um eine möglichst weitgehende Kompatibilität bemüht ist. Dazu versucht die Shell, selbst inkompatible Module über eine Remote-Verbindung mit der Windows Powershell doch noch auszuführen. Auch diese Möglichkeit funktioniert unter Linux und macOS natürlich nicht.
Powershell 7: Hauptsächlich nützlich unter Windows
So ist auch die neue Powershell 7 – die übrigens trotz des Verzichts auf den Zusatz Core immer noch auf .NET Core, nun in der Version 3.1, basiert – auf Windows-Systemen weitaus nützlicher als auf den anderen unterstützten Plattformen. Gerade unter dem eigenen OS will Microsoft aber auch weiterhin auf die Windows Powershell setzen.
Die Powershell 7 wird entsprechend mit keinem Betriebssystem ausgeliefert. Nutzer, die die Shell verwenden wollen, müssen sie händisch von der Release-Seite auf GitHub laden und installieren. Die unterstützten Plattformen fasst Microsoft in dieser Übersicht zusammen.
Mehr Details liefert der Blogbeitrag zur Ankündigung der Powershell 7.