bluebay2014 - Fotolia

PowerShell vs. Bash unter Windows: Ein Vergleich

Für Windows-Administratoren mit einer Schwäche für die Kommandozeile steht mit der integrierten Linux-Bash-Shell eine durchaus interessante Option bereit.

Mit der Einführung der Linux-Bash-Shell auf Microsofts Betriebssystemen drängt sich ein direkter Vergleich zwischen Bash und Windows PowerShell auf.

Die Einführung von Bash in Windows 10 ist auf eine Zusammenarbeit von Microsoft mit dem Linux-Anbieter Canonical zurückzuführen. Die Integration von Bash in die Windows-Umgebung erspart vielen Anwendern die Notwendigkeit eines Dual-Boot-Systems mit Windows und Canonicals Betriebssystem Ubuntu für den Zugriff auf Linux-Features.

Administratoren mit ausgewiesenen Scripting-Kenntnissen mögen sich fragen, ob Bash drauf und dran ist, unter Windows die PowerShell zu ersetzen. Die PowerShell ist schließlich Unix- und Linux-Systemen sehr ähnlich und bietet zudem bereits OpenSSH-Verbindungen über das Secure Shell Protokoll.

Ist die neue Linux-Freundlichkeit im Hause Microsoft also das Zünglein an der Waage in der Debatte Windows PowerShell vs. Bash? „Auf keinen Fall“, verspricht Jeffrey Snover, Erfinder der PowerShell und Microsoft Technical Fellow. PowerShell wird bleiben, gibt er klar aus, und empfiehlt Administratoren einen differenzierenden Blick auf die Unterschiede zwischen Microsofts nativer Scripting-Plattform für Automatisierung und Bash.

Windows PowerShell vs. Bash

Zweck und Einsatzgebiet: PowerShell ist ein konfigurierbares Verwaltungswerkzeug, das die Fähigkeiten der Steuerung über die Linux Kommandozeilenschnittstelle (CLI, Command Line Interface) in die historisch gewachsene Klick-Umgebung der Windows-Welt gebracht hat, um in Windows Server virtuellen Umgebungen effizient verwalten zu können.

Auf der anderen Seite steht Bash für den Einsatz in Umgebungen für Entwickler. Bash wurde zur Ergänzung und Stärkung der CLI-basierenden Interaktion eingeführt. Mit dem Einzug von Bash in Windows lässt sich Code, den Entwickler oder Infrastrukturingenieure für Linux geschrieben haben, auch für ihre Windows-Systeme verwenden. Nehmen Sie als Beispiel Tools, die zuerst für Linux verfügbar waren, wie Python, Ruby oder Git, und die heute in DevOps direkt unter Windows gang und gäbe sind.

Die Ausgabe des Bash-Befehls Ls unterscheidet sich nicht wesentlich von der Ausgabe für den PowerShell-Befehl dir.
Abbildung 1: Die Ausgabe des Bash-Befehls Ls unterscheidet sich nicht wesentlich von der Ausgabe für den PowerShell-Befehl dir.

Bash für Windows ist aber nicht Windows. Bash erschien mit dem Windows 10 Anniversary Update in zwei Teilen: dem Core-Subsystem und dem Package. Das Core-Subsystem bietet Linux-APIs auf Windows und ist integraler Bestandteil der Windows 10 Insider Builds. Canonical bietet das optionale Package, das die die CLI-Tools für Linux-Systeme umfasst. Während PowerShell auf jeder Windows-Plattform läuft, benötigen Sie mindestens das x64 Windows 10 Anniversary Update Build 14393, um Bash installieren und verwenden zu können.

Syntax: PowerShell ist nicht einfach nur eine Shell. PowerShell ist eine komplette Scripting-Umgebung. PowerShell ruft zur Laufzeit über automatisierte Scripts oder APIs leichtgewichtige Befehlssequenzen auf, die Cmdlets genannt werden. Und auch die alten Kommandos für DOS funktionieren noch immer gut, auch wenn PowerShell sie wirklich nicht benötigt. PowerShell verwendet dafür Aliasse, die von den alten Befehlen auf aktuelle Versionen verweisen. Wenn Sie wissen möchten, welche Aliasse PowerShell unterstützt, rufen Sie einfach Get-Alias auf.

PowerShell arbeitet mit einer Objekte-Pipeline. Es reiht Objekte aneinander und verwendet die Ausgabe des Vorgängers als Eingabe für den Nachfolger in der Reihe. Dieselben Daten können in derselben Sequenz mit unterschiedlichen Cmdlets bearbeitet werden. Durch das Pipelining von Objekten können PowerShell-Skripte komplexe Daten teilen und vollständige Datenstrukturen zwischen Befehlen verschieben. Bash seinerseits überträgt Ausgaben und Eingaben als Text, was es dem Anwender einfach macht, Informationen an das nächste Programm weiterzugeben.

In Abbildung 2 können Sie sehen, wie PowerShell ein Verzeichnis anzeigt. Ausgegeben werden Dateiobjekte mit Eigenschaften, wie etwa dem Erzeugungsdatum und der Größe, die neben den Dateien angezeigt werden. Die Ausgabe von Bash hingegen ist bestimmt durch eine Sammlung von Text, der Dateinamen in Textform wiedergibt. Entscheidend ist das Endergebnis: Ihre Skripte nehmen diese Ausgabe als Eingabedaten an und leiten diese an eine andere Funktion weiter oder nutzen sie zur eigenen Ausführung einer Aktion.

Die PowerShell-Ausgabe einer Verzeichnisliste zeigt Objekte und Eigenschaften.
Abbildung 2: Die PowerShell-Ausgabe einer Verzeichnisliste zeigt Objekte und Eigenschaften.

Fähigkeiten: PowerShell ist ein Werkzeug für die Konfigurationsverwaltung. Sie können damit die Registry verändern, die Microsoft Azure Cloud und E-Mails in Exchange verwalten oder auch Windows Management Instrumentation ansprechen. Die Bash-Shell und Kommandosprache bieten diese Möglichkeiten in Windows nicht an. Dank des Einsatzes als Entwickler-Tool unter Windows können Anwender jedoch Funktionen oder Dienste programmieren, während dieselben Dateien sowohl von dem Linux- als auch von dem Windows-CLI aus bearbeitet werden können.

PowerShell macht es über eine gemeinsame Syntax sehr einfach, auf Werte in der Windows Registry oder Dateieigenschaften zuzugreifen. Auch die Verarbeitung von Extensible Markup Language (XML) ist problemlos.

Die Bedeutung von PowerShell gegenüber Bash hängt vor allem vom jeweiligen Anwender ab. Arbeiten Sie mit mehreren Windows-Systemen, so werden Sie mit Bash nicht besonders warm werden. Hier ist PowerShell ganz klar das Mittel der Wahl für Ihre Skripte.

Bash ermöglicht es Ihnen nicht, von Windows Apps aus auf lokale Linux-Dateien zuzugreifen. So können Sie zum Beispiel mit Bash keine Textdateien von Linux im Windows Editor öffnen. Bash ist zwar großartig für das Verarbeiten von Textdateien in einer Scripting-Umgebung, jedoch wird alles über APIs bewerkstelligt, nicht über Dateien. Bash ist also eigentlich nur dann wirklich sinnvoll, wenn Sie Linux-Code auf Windows-Maschinen importieren und dort weiterentwickeln möchten.

Um Windows Workloads zu verwalten, ist PowerShell mit seiner Integration von .NET und COM+ sehr effizient. Mit PowerShell wird eine Vielzahl von objektorientierten und modularen Features installiert, die das Tool um Funktionalität für Windows-orientierte Aufgaben in Active Directory, Exchange Server und SQL Server erweitern. VMware lässt sich ebenfalls sehr einfach über PowerShell verwalten. Das CLI hat gute Funktionen für Tracing und Debugging. Anwender können in verschiedensten integrierten Programmierumgebungen ihren Code entwickeln und testen.

PowerShell kann aber nicht mithalten mit Bash auf Linux. Bash stellt dort ein komplettes, von Grund auf für Linux durchdachtes Ökosystem dar.

https://cdn.ttgtmedia.com/rms/German/powershell-vs-Bash-Vergleich-deutsch.png
Abbildung 3: Die Unterschiede zwischen PowerShell und Bash im Überblick.

Lernkurve für Admins bei PowerShell vs. Bash

Bei PowerShell dreht sich eine Menge um Scripting. Wer aus dem Linux/Unix-Bereich kommt, wird sich schnell zuhause fühlen. Für Freunde der Windows-Benutzeroberfläche wird es wohl eine steile Lernkurve geben. Bereits die PowerShell 4.0 verfügt zum Beispiel über 299 eingebaute Cmdlets, von denen jedes mehrere Optionen bietet. Und um das Ganze noch weiter zu verkomplizieren, müssen Sie die korrekten Parameter auch richtig verwendet werden.

Bash auf Windows verfügt über weniger als 40 interne Funktionen und ungefähr 100 Hilfsprogramme. Bei schlankerer Syntax ist Bash performanter, jedoch bietet PowerShell den Vorteil einer konsistenten Syntaxstruktur. Steigen Sie gerade erst in das Thema ein, so wird es eine Weile dauern, bis Sie die Möglichkeiten der PowerShell durchdrungen haben. Wer sich allerdings mit dem Tool auskennt, kann damit Deployment, Verwaltung und Reparatur hunderter Systeme von jedem beliebigen Ort aus bewirken, Runbooks automatisieren und auf C# basierende PowerShell-Skript-Dateien zur Automatisierung sich wiederholender Aufgaben nutzen.

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

Nächste Schritte

++++++++ NEXT STEPS +++++++++

PowerShell 6.0 für Windows und Linux

So werden PowerShell-Skripte verwendet

PowerShell: Die 25 wichtigsten Befehle zur Windows-Verwaltung

Erfahren Sie mehr über Serverbetriebssysteme

ComputerWeekly.de
Close