zentilia - Fotolia

Funktionen und Grenzen der Open-Source-PowerShell für Linux-Betriebssysteme

Seit Kurzem steht die PowerShell auch für Linux bereit. Im direkten Vergleich mit der proprietären Windows-Version gibt es aber einige Unterschiede.

Die PowerShell ist seit 2006 ein proprietärer Bestandteil von Windows. Geändert hat sich diese Tatsache zur Überraschung der gesamten IT-Industrie im August 2016: Seitdem ist die PowerShell als Open-Source-Komponente auch für Linux erhältlich.

Natürlich funktioniert die PowerShell auch nach wie vor noch auf Windows, interessanterweise hat Microsoft deren Funktionalität aber auch auf andere große Betriebssysteme wie Mac OS X und Linux-Distributionen wie CentOS und Ubuntu ausgeweitet. 

Welche Konsequenzen hat diese Entwicklung für Linux-Administratoren?

Auf welchen Systemen läuft die PowerShell?

Die Open-Source-Variante der PowerShell besteht nicht aus einem einzelnen Release, sondern einer Vielzahl von Releases, die für Windows, Linux-Varianten, Mac und Docker angepasst sind.

Dabei könnte Microsoft die PowerShell-Unterstützung durchaus auch auf weitere Betriebssysteme ausweiten, wenn aus der Community der Wunsch nach einem Einsatz auch auf anderen Plattformen laut wird. Seine eigene, proprietäre Version der PowerShell für Windows behält Microsoft parallel zu dieser Entwicklung aber auch weiterhin bei.

Die Windows-Versionen der Open-Source-PowerShell unterstützen Windows 7, Windows 8.1 und Windows 10 ebenso wie Windows Server 2012 R2 und Windows Server 2016. Jede dieser Versionen ist auf GitHub als Windows-Installer-Datei mit entsprechenden MSI-Dateierweiterungen erhältlich.

Für Windows 8.1 und Windows Server 2012 R2 wird außerdem das neueste Visual C++ Redistributable für Visual Studio 2015 benötigt. Dem Dateinamen sieht man normalerweise die Build-Version und das Ziel-Betriebssystem (BS) an, zum Beispiel: PowerShell-6.0.0.<BUILD>.<BS>.msi

Als neue Betriebssysteme unterstützt die PowerShell jetzt mehrere Linux-Versionen, einschließlich Ubuntu 14.04, Ubuntu 16.04, CentOS 7, openSUSE 42.1, Oracle Linux 7, Red Hat Enterprise Linux (RHEL) 7 und Arch Linux. Anwender von Ubuntu können ein Debian-Package (DEB) von GitHub herunterladen. Nutzer von CentOS, openSUSE, Oracle Linux und RHEL können RPM-Dateien herunterladen und installieren. Versionen für Arch Linux sind statt über GitHub aus dem Arch User Repository zu beziehen.

Apple-Anwender können ein Package (PKG) für OS X 10.11-Systeme herunterladen. Zur Installation kann die neueste Version von GitHub für OS X-Systeme heruntergeladen und mit einem Doppelklick installiert werden, danach geht es dialoggestützt bis zum Abschluss der Installation weiter.

Wer Container nutzt, kann eine Docker-Version der PowerShell verwenden. Docker bietet Release- und Beta-Builds als Docker-Dateien an, mit denen die PowerShell in einem Container für jede unterstützte Linux-Distribution erzeugt und gestartet werden kann. Benötig wird dafür mindestens Docker 1.12, der Befehl sudo wird nicht unterstützt.

Unterscheidet sich die Open-Source-Version von der proprietären PowerShell?

Die Open-Source-Version der PowerShell hat sich bereits in ungefähr ein Dutzend verschiedene Versionen für die Unterstützung von Windows-, Linux-, Mac- und Docker-Umgebungen aufgespalten. Viele dieser Versionen sind nicht komplett austauschbar. Anwender müssen die für ihr Betriebssystem passende Version installieren.

Die Befehlssätze sind nicht über alle verschiedenen Versionen für unterschiedliche Betriebssysteme hinweg identisch. Grundsätzlich bietet die Open-Source-Version der PowerShell nur eine Untermenge der Module und Cmdlets der vollständigen, proprietären PowerShell-Version an.

Zudem gibt es Befehle, die in einigen Versionen vorhanden sein können, die für andere Betriebssysteme schlicht unpassend sind. Sie werden dann entfernt, um den Umfang des Pakets zu reduzieren. Ein Beispiel wären Windows-Befehle wie Get-Service oder Get-Eventlog, die in der PowerShell für Linux nicht verfügbar sind.

Daher sollte man vor einer Entscheidung Testphasen durchführen, um sich die entsprechende PowerShell-Version und die darin enthaltenen Befehle sorgfältig ansehen zu können. Wichtig ist dabei festzustellen, ob die Open-Source-Version der PowerShell für die eigenen Anforderungen an die Systemverwaltung ausreichend ist.

Glücklicherweise unterstützt aber auch die Open-Source-Version der PowerShell den Befehl get-module -list, mit dem angezeigt werden kann, welche Features und Funktionen in den Bereichen Verwaltung, Sicherheit, Utilities und anderen Feldern genau verfügbar sind. Jede Version bietet außerdem dieselbe Hilfefunktion, die jeden verfügbaren Befehl und dessen korrekte Syntax für die Anwendung erläutert. Damit können IT-Fachleute die Möglichkeiten jeder entsprechenden Version umfassend prüfen und bewerten.

Wie unterscheidet sich das Erstellen von PowerShell-Skripten zwischen Linux und Windows?

Das Erstellen von Skripten ist in der Open-Source-Version der PowerShell im Wesentlichen identisch zum Vorgang in der proprietären Windows-Version, die auf Windows-Betriebssystemen vorinstalliert ist. So kann man zum Beispiel auch mit der Open-Source-Version Pipeline-Verhalten erzeugen, per Desired State Configuration eine gewünschte Systemzustandskonfiguration herstellen und mit der Operations Management Suite Workloads in Azure und anderen Clouds verwalten.

PowerShell-Skripte sind Textdateien, die während der Ausführung geparst und interpretiert werden, um eine Reihe erwünschter Handlungen durchzuführen. Windows bietet die native PowerShell Integrated Scripting Environment (ISE) für das Erzeugen und Verändern von Skripten. PowerShell-Versionen für Linux und Max OS X unterstützen die ISE dagegen nicht. Hier lassen sich aber andere Texteditoren oder sogar Programmierumgebungen wie Visual Studio Code einsetzen, um PowerShell-Skripte zu erstellen und zu verwalten.

Beim Erstellen von Skripten wird in der Regel ein Debugging-Prozess nötig sein, um Fehler zu finden und zu beheben. Das Debugging sollte dabei nicht erst erfolgen, wenn der Code bereits in der Produktivumgebung eingesetzt wird! Für die Skript-Überprüfung können auch Debugging-Tools verwendet werden, Visual Studio Code zum Beispiel umfasst einen Debugger, der Aufgaben wie die Überprüfung der Befehlssyntax beherrscht.

Hat ein PowerShell-Skript das Debugging erfolgreich überstanden, so sollte es dennoch vor dem Einsatz in einer Produktivumgebung auch noch einmal als gesonderter Prozess getestet werden, um so sicherzustellen, dass es nicht nur fehlerfrei ist, sondern auch die erwünschten Ergebnisse liefert. Die Community der Open-Source-Version nutzt hierfür oftmals das Tool Pester für das Erstellen von Testszenarien.

Herausforderung Befehls-Alias

Ein weiterer Unterschied zwischen den verschiedenen PowerShell-Versionen ist die Behandlung von Befehls-Aliassen. Die Windows-Version der PowerShell bietet Aliasse an, die Linux-Befehlsnamen entsprechen. Dabei werden Linux-Befehle in Windows PowerShell-Befehle übersetzt, um sicherzustellen, dass die PowerShell mit den Antworten arbeiten kann.

Für Linux- und Mac-Distributionen hingegen hat Microsoft die Möglichkeit von Aliassen entfernt. Linux-Administratoren können native Linux-Befehle wie ls, cp und mv in PowerShell ebenso benutzen wie vergleichbare PowerShell-Befehle (zum Beispiel dir). Allerdings geben Linux-Befehle statt Objekte Strings zurück.

Nutzt ein Administrator einen nativen Linux-Befehl, so weiß die PowerShell möglicherweise mit der Antwort nichts anzufangen. Dies kann die Möglichkeiten beim Scripting oder anderer Funktionen der PowerShell für Linux einschränken.

Vor- und Nachteile der Open-Source-PowerShell

PowerShell-Skripte müssen mit der Dateinamenserweiterung .PS1 gespeichert werden. Andere Erweiterungen könnten zu Problemen beim Austausch von Objekten führen.

Auch die Open-Source-PowerShell unterstützt Just Enough Administration (JEA) zur eingeschränkten oder zeitweisen Anwendung administrativer Rechte. Allerdings ist die JEA-Funktionalität in den PowerShell-Versionen für Linux und Mac OS X weder zu finden, noch wäre dies für die kommende PowerShell-Version 6.0 geplant.

Die PowerShell-Syntax beachtet im Normalfall keine Groß- und Kleinschreibung. Andere Betriebssysteme außer Windows, etwa Linux, sind bei Dateinamen und der exklusiven Nutzung von Schrägstrichen in Dateinamen anders gestrickt. Das kann Probleme durch Groß-/Kleinschreibung bei Dateipfaden und -namen hervorrufen, durch die angegebene Module nicht geladen werden. Entspricht zum Beispiel die Schreibweise des Moduls im Skript nicht der Schreibweise des Dateinamens, so wird es nicht korrekt geladen werden. Groß- und Kleinschreibung kann überdies zu Problemen bei der automatischen Vervollständigung über die Tab-Taste führen.

Eine weitere Eigenheit der Open-Source-Version: Platzhalterzeichen funktionieren nur für eingebaute Befehle, nicht aber für externe. Ein Befehl wie ls *.exe wird beispielsweise nicht funktionieren, da der Platzhalter * ohne einen Workaround nicht sauber funktioniert.

Die PowerShell-Versionen für Linux und Max OS X bieten zudem weder die Aufgabensteuerung noch die Zeitplanung an. Befehle für Foreground/Background Jobs funktionieren also nicht. Auch Client-Side Remoting ist in der PowerShell für Linux und Max OS X nicht zu finden. Und es gibt auf Linux keine Befehle für WMI (Windows Management Instrumentation) oder CMI (Common Information Model). Es besteht aber durchaus die Möglichkeit, dass die Entwickler-Community einige dieser Probleme in zukünftigen Versionen der PowerShell lösen wird.

Folgen Sie SearchDataCenter.de auch auf Twitter, Google+, Xing und Facebook!

Artikel wurde zuletzt im August 2017 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Erfahren Sie mehr über Linux-Server

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchEnterpriseSoftware.de

Close