c't 10/2018
S. 32
News
PowerShell-Entwicklung

In zwei Welten

PowerShell Core erobert Linux, Raspi und IoT

Microsoft schickt hochrangige Vertreter zu einer Konferenz, um die Ablösung eines eigenen Produkts durch eine Open-Source-Alternative zu unterstützen. Das klingt frei erfunden, ist aber passiert: Das Produkt ist die PowerShell und die Konferenz fand in Hannover statt.

PowerShell Core läuft (experimentell) sogar auf einem Raspberry Pi. Ein nachladbares Modul erweitert die Skriptsprache um Befehle, mit denen sich dessen I/O-Pins ansteuern lassen.

Für PowerShell-Anwender sind gerade spannende Zeiten: Anfang des Jahres ist PowerShell Core 6.0 erschienen, die erste dem Beta-Stadium entwachsene Ausgabe der Open-Source-Variante von Microsofts objektorientierter Textkonsole. Damit ist mit der Weiterentwicklung der Windows PowerShell erst mal Schluss: Microsoft versorgt sie zwar nach wie vor mit Bugfixes und Sicherheits-Updates, aber neue Funktionen wird sie nicht mehr bekommen.

Dieses Spannungsfeld zwischen der eingeführten und bewährten Windows PowerShell einerseits und dem quelloffenen Newcomer PowerShell Core andererseits war denn auch eines der großen Themen auf der diesjährigen PowerShell Conference Europe, auf der Erfinder Jeffrey Snover mit Entwicklern über die Zukunft der Scripting-Engine diskutierte.

Cross-Platform

Zu den hervorstechendsten Merkmalen der PowerShell Core gehört ihre Plattformunabhängigkeit: Sie läuft nicht nur unter Windows, sondern auch unter macOS sowie praktisch allen gängigen Linux-Distributionen. Für eingefleischte Windows-PowerShell-Anwender hat diese Flexibilität allerdings ihren Preis: Etliche Befehle, die sich mit Windows-Spezialitäten wie der Registry oder WMI beschäftigen, stehen in PowerShell Core nicht zur Verfügung. Wer die Open-Source-PowerShell unter Windows einsetzt, dem hilft aber das „Windows PowerShell Compatibility Pack“, die meisten dieser Lücken zu füllen. Das gelingt dem Paket, indem es transparent eine Remote-Verbindung zur lokalen Windows PowerShell aufbaut, die Kommandos dort hinschickt und die Ergebnisse einsammelt.

Apropos Remote-Verbindungen: Hier setzt PowerShell Core auf das in der Unix- und Linux-Welt praktisch überall verfügbare SSH-Protokoll. Native Portierungen der dazu nötigen Bibliotheken OpenSSH und LibreSSL werden mit einem der nächsten großen Updates auch in Windows Einzug halten – eine Beta ist schon seit Version 1709 in Windows 10 vorhanden. Allerdings gibt es bislang keine Pläne, Remoting über SSH auch in die Windows PowerShell zurück zu portieren. Andererseits ist der Server für das bislang zum Remote-Zugriff via PowerShell benutzte WSMan-Protokoll auf Nicht-Windows-Plattformen noch experimentell und der Client unterstützt keine Authentifizierung über Kerberos-Tickets. Das Thema Remoting dürfte die PowerShell-Entwickler also noch eine Weile beschäftigen.

Zu den eher überraschenden Ereignissen auf der Konferenz gehörte eine Demonstration des Moduls PowerShell-IoT: Es ergänzt eine auf einem Raspberry Pi 3 laufende PowerShell um Befehle zum Zugriff auf dessen GPIO-Ports sowie die SPI- und I2C-Schnittstellen. Mit Befehlen wie Get-GpioPin und Set-GpioPin lassen sich bequem Sensoren auslesen oder LEDs zum Blinken bringen.

Ausblick

Microsoft will etwa alle sechs Monate eine PowerShell Core mit neuer Nachkommastelle in der Versionsnummer herausbringen. Ausgabe 6.1 soll Anfang Juli erscheinen, die zweite Preview müsste mit dem Erscheinen dieser c’t auf GitHub verfügbar sein (siehe ct.de/y61h).

Von den 129 für die Version 6.1 geplanten Änderungen und Erweiterungen stammen 68 nicht von Microsoft, sondern aus der Community. Zu den Neuerungen gehören unter anderem ein modernisiertes Hilfesystem, der Eingabezeilen-Editor PSReadline in Version 2.0, Verbesserungen beim Remoting über SSH sowie Vereinfachungen für Anwender, die PowerShell Core als Docker-Container verteilen wollen.

Entwicklern von PowerShell-Modulen soll es künftig einfacher gemacht werden, Erweiterungen zu bauen, die sowohl in der Windows PowerShell als auch in PowerShell Core eingesetzt werden können. Dazu ist die „PowerShell Standard Library“ in Entwicklung: Module, die auf diese Bibliothek aufbauen, benutzen automatisch nur Funktionen, die in beiden Plattformen verfügbar sind. Eine Preview ist bereits als NuGet-Paket verfügbar. (hos@ct.de)