Microsoft-Powershell für Linux

Microsofts Powershell gibt es auch für Linux. Die Shell bietet eine moderne und übersichtliche Script-Umgebung, die auch für Linux-Nutzer einiges zu bieten hat.

Das Terminalfenster ist eins der wichtigsten Werkzeuge für die Administration eines Linux-Systems. Darin wird bei den meisten Systemen die Bash-Shell gestartet. Es gibt aber auch alternative Shells, etwa die Powershell für Linux, die Microsoft seit 2016 kostenlos bereitstellt. Das Angebot richtet sich vor allem an Windows-Administratoren, die unter Linux das gewohnte Tool verwenden wollen. Es lohnt sich jedoch auch als Linux-Nutzer, einen Blick darauf zu werfen. Denn Powershell bietet im Vergleich zu Bash viele Funktionen, die für jedermann nützlich sein können.

Powershell ist nicht gleich Powershell

Was Microsoft für Linux anbietet, heißt Powershell Core, wozu auch .Net-Core gehört. Die Powershell unter Windows kann dagegen auf eine voll ausgestattete .Net-Laufzeitumgebung zurückgreifen. Zur Zeit gibt es daher unter Linux etwa 330 Befehle, unter Windows dagegen mehr als 1400. Wer zwischen beiden Plattformen wechselt, muss also erst einmal herausfinden, was fehlt und was trotzdem möglich ist. Als grobe Richtlinie mag dienen: Alles, was mit Windows-Diensten, den Netzwerkeinstellungen oder Benutzerrechten zu tun hat, fehlt unter Linux. Alle Befehle für den Umgang mit dem Dateisystem oder mit Textdateien sind auch in Powershell Core vorhanden. Powershell lässt sich unter Linux daher vor allem für Scripts sinnvoll verwenden, die Informationen auswerten, die Linux-Tools auf der Kommandozeile liefern. Mit dem Powershell-Repertoire können Sie auch Dateilisten nach bestimmten Kriterien filtern oder ZIP-Dateien etwa für Backups automatisiert erstellen.

Powershell installieren

Die Powershell-Downloads . Microsoft bietet Softwarepakete für die gängigen Linux-Distributionen an, etwa Ubuntu 16.04 und 18.04, Cent-OS 7 und Fedora 28. Für Nutzer von Ubuntu 18.04 genügen folgende Befehle, um das DEB-Paket zu laden und zu installieren:

sudo dpkg -i powershell_6.2.0-1.ubuntu.18.04_amd64.deb
sudo apt -f install

Nach der Installation starten Sie die Powershell im Terminalfenster mit

pwsh

und durch Eingabe von exit verlassen Sie die Powershell wieder.

Editoren für Powershell-Scripts

Die Powershell lässt sich wie Bash interaktiv auf der Kommandozeile nutzen. In der Regel werden Sie für komplexere Befehlsfolgen jedoch Script-Dateien erstellen wollen. Dabei handelt es sich um einfache Textdateien, für die jeder beliebige Editor ausreicht, beispielsweise Gedit (Ubuntu) oder Xed (Linux Mint). Mehr Komfort bietet Visual Studio Code, ein kostenloser Quelltexteditor von Microsoft .

Das Programm unterstützt neben Powershell auch andere Script- und Programmiersprachen wie PHP, Perl und Javascript. Über Erweiterungen lassen sich weitere Funktionen nachrüsten. Wenn Sie das erste Mal ein Powershell-Script öffnen, schlägt Ihnen Visual Studio Code die Installation einer dazu passenden Erweiterung vor, die Sie per Klick auf „Install“ annehmen sollten. Der Editor zeigt dann Vorschläge zur Syntax und den Parametern an, wenn Sie einen Befehl eintippen („Intellisense“).

Powershell-Profil erstellen

Powershell kann ein Profil-Script beim Start automatisch laden. Im Script lassen sich Alias-Definitionen für die Abkürzung von Befehlen und benutzerdefinierte Funktionen unterbringen. Außerdem können Sie darüber Module laden, die Sie in jeder Powershell-Sitzung nutzen wollen. Wo Ihre persönliche Profildatei liegen muss, erfahren Sie in der Powershell so:

$profile

Wie bei allen Befehlen bestätigen Sie die Eingabe mit der Eingabetaste. Standardmäßig liegt die Datei im versteckten Ordner „/home/[User]/.config/powershell/Microsoft. PowerShell_profile.ps1“. Um diesen zu sehen, aktivieren Sie im Ubuntu-Dateimanager über das Hamburger-Menü (drei horizontale Linien) die Option „Verborgene Dateien anzeigen“.

Zunächst sind aber weder Ordner noch Profil-Script vorhanden. Um beides zu erstellen, verwenden Sie diesen Befehl:

if (!(Test-Path -Path $profile )) {New-Item -Type File -Path $profile -Force }

Mit der Zeile

code $profile

öffnen Sie die Datei im Editor Visual Studio Code. In der Datei können Sie jetzt Alias-Definitionen unterbringen:

Function ge {Set-Location -Path $home/Dokumente; gedit $args[0]}

Nach Änderungen laden Sie das Profil in der Powershell neu:

.$profile

Mit der Zeile

ge test.txt

wechseln Sie – gemäß angelegter „Function“ – in den Ordner „Dokumente“ im eigenen Home-Verzeichnis („Set-Location“) und laden die Datei im Editor Gedit.

Hinweis: Bei Powershell-Befehlen werden Groß- und Kleinschreibung nicht unterschieden. Bei Pfadangaben und Linux-Tools müssen Sie die Schreibweise jedoch wie unter Linux gewohnt beachten.

Beispiel-Scripts für die Linux-Powershell

Eine Einführung in die Powershell-Script-Sprache kann dieser Artikel nicht leisten. Wir haben aber einige Beispiel-Scripts erstellt und die Profildatei mit weiterem Inhalt gefüllt . Auf dieser Seite finden Sie auch alle Downloadadressen und Befehlszeilen aus diesem Artikel.

Die Funktion „FindBig“ aus der Profildatei sucht im angegeben Ordner samt Unterordner mit „Get-ChildItem“ (Alias: gci) nach Dateien. Das Ergebnis wird absteigend nach der Größe sortiert, davon nimmt die Funktion die ersten zehn Dateien, rundet und formatiert die Größe in Megabyte und gibt das Resultat mit „Format-List“ als Liste aus.

Die Funktion „LastTenFiles“ zeigt die neuesten zehn Dateien an. Mit „Format-Table“ erfolgt die formatierte Ausgabe im Fenster der Powershell.

„FolderSizes“ ermittelt Ordnergrößen, die Ausgabe wird in der Datei „ErgebnisDerZaehlung.txt“ gespeichert und automatisch mit Gedit geöffnet.

Alle Funktionen erwarten einen Pfad als Parameter. Fehlt dieser, wird in „$home“ gesucht, dem Profilordner des aktuellen Benutzers.

Über finden Sie außerdem fertige Scripts, mit denen Sie beispielsweise die aktuelle IP-Adresse ermitteln, ZIP-Dateien automatisiert erstellen oder Mails versenden können.

Mehr Informationen zur Powershell

Eine umfassende Beschreibung aller Powershell-Befehle gibt es bei Microsoft. Über lässt sich die maschinell aus dem Englischen übersetzte Dokumentation teilweise in deutscher Sprache abrufen. Die vollständige Referenz gibt es jedoch nur auf Englisch. Unter „Reference“ gibt es auch einen eigenen Abschnitt zu Powershell Core. Darüber hinaus finden Sie im Internet über eine Suchmaschine zahlreiche Anleitungen und Beispiele, die sich allerdings meistens auf Windows beziehen. Ob diese Beispiele dann auch unter Linux und Powershell Core funktionieren, müssen Sie ausprobieren.