Wie man die PowerShell noch mächtiger (und hübscher) macht

In diesem Artikel zeige ich euch, wie man aus der PowerShell mit ein wenig Tuning noch mehr herausholen kann:

alt (schon ein bisschen hässlich)neu (und wunderschön):

Vorbereitungen

Um die PowerShell so hübsch wie im obigen Screenshot zu bekommen, müssen ein paar Dinge vorbereitet werden:

  • Man benötigt eine schöne Schriftart seiner Wahl, ich nutze in meinem Beispiel CaskaydiaCove NF. Schriften erhält man auf Seiten wie Nerdfonts oder Cascadia Code. Wichtig ist, dass die Schrift sogenannte Powerline Glyphs unterstützt.
  • Install Git for Windows.
  • Das Modul PSReadLine in Version 2.2.0 oder höher (ich nutze in diesem Artikel die beta4) – siehe unten

PowerShell Module installieren

Nach den Vorbereitungen müssen nun notwendige Module installiert werden:

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
Install-Module PSReadLine -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck
Code-Sprache: PowerShell (powershell)

Das Modul oh-my-posh ist das Herzstück des gesamtes Setups, alles drumherum ist mehr Schönheitschirurgie 🙂

Die Cascadia Code Schrift hat bei mir nicht funktioniert, also bin ich auf die ähnliche Schriftart von Nerd Fonts ausgewichen: Caskaydia Cove Nerd Font Complete. Die zip Datei enthält alle notwendigen ttf Dateien um die Schrift in Windows für alle Benutzer zu installieren:

Optimierung des Windows Terminal

Jetzt sind wir schon beim Feinschliff angekommen. Im Windows Terminal in den Einstellungen (alles kann man auch über die settings.json anpassen, aber der Einfachheit halber bleibe ich bei der grafischen Version):

Gehe zu dem Profil, das für die pwsh (das nebenbei bemerkt die Abkürzung für PowerShell 7 ist) erstellt wurde – sollte es nicht existieren, kann man es einfach erstellen und die Einstellungen im Bereich General übernehmen wie hier gezeigt:

  • Name sollte hübsch sein, also nenne ich es PowerShell 7.2 statt nur PowerShell.
  • Command line muss auf die exe der PowerShell zeigen. Der Pfad ist im Standard C:\Program Files\PowerShell\7\pwsh.exe (falls die pwsh woanders installiert wurde, muss der Pfad entsprechend anders lauten).
  • Starting directory ist das Verzeichnis in dem die Shell startet. Es gibt keine gute Empfehlung für einen Standard. Ich ändere meine Meinung hier wöchentlich. Manchmal das Dev-root Verzeichnis, mal Documents, mal etwas anderes. Der Standard ist %USERPROFILE%.
  • Als Icon nehme ich gerne das offizielle PowerShell Roboter Avatar. Das gibt es auf der GitHub Seite: PowerShell/assets at master · PowerShell/PowerShell · GitHub. Hier das Icon avatar_128.svg. Nach dem Download muss man das in ein png konvertieren und den Pfad hier abspeichern.
  • Tab title kann man leer lassen. Natürlich kann man auch einen Titel wie pwsh7.2 hier reinschreiben. Ich lasse das aber leer, weil ich später in diesem Artikel noch die Ribbons verkleinere und da stört statischer Text.

Das Ergebnis sieht so aus:

Weiter im Menü Appearance:

  • Color scheme ist reine Geschmackssache – hier empfiehlt es sich einfach auszuprobieren, welche Einstellungen am meisten gefällt. Die Box darüber zeigt eine Vorschau, wie genau das Farbschema aussehen wird.
  • Font face ist die wichtigste aller Einstellungen. Hier muss eine Schriftart gewählt werden, die die sogenannten Powerline Glyphs unterstützt. Andernfalls hat man in der Konsole Hieroglyphen und komische Symbole. Wie bereits erwähnt nutze ich die Schriftart CaskaydiaCove NF.
  • Font size und Font weight sind wieder reine Geschmackssache.
  • Retro terminal effects ist eine Hassliebe. Manchmal finde ich die Effekte toll, an anderen Tagen verursachen sie Kopfschmerzen. Alle, die old-school Retro-Optik wie auf einem CRT Monitor bevorzugen, sollten das auf On stellen.
  • Automatically adjust lightness of indistinguishable text immer anschalten.
  • Cursor ist auch wieder reine Geschmackssache.
  • Background image ist sehr interessant wenn man etwas wirklich wirklich wirklich nerdiges zaubern möchte. Hier kann man ein statisches oder bewegtes Hintergrundbild im Terminal-Konsolenfester einbetten.
  • Und wieder, Text formatting und Transparency ebenso Window sind wieder reine Geschmackssache. Hier kann jeder rumspielen und die Einstellungen treffen die ihm/ihr am meisten gefallen.

Das Menü sollte fertig konfiguriert ungefähr so aussehen:

Auch unter Advanced ist alles wieder reine Geschmackssache, darum gehe ich hier nicht darauf ein. Einfach damit rumspielen, auf die Gefahr dass dabei etwas herauskomt, das einem gefällt.

Jetzt bleiben noch ein paar kleine Anpassungen übrig, die vorgenommen werden müssen um das Terminal zur PowerShell 7 Kommandozentrale umzubauen:

  • Bei Startup sollte das Default profil auf das neue PowerShell 7.2 Profil verweisen:
  • Ich habe die Default terminal application auf Windows Terminal Preview eingestellt.
  • Ich empfehle, die Einstellung When Terminal starts auf Open windows from a previous session zu setzen. Dann kann man direkt dort weitermachen, wo man in der letzten Sitzung aufgehört hat.
  • Unter Interaction sollte Automatically copy selection to clipboard auf On stehen, das spart erfahrungsgemäß sehr viel Zeit.
  • Ebenso sollte Remove trailing white-spaces in rectangular selection immer auf On eingestellt sein.
  • Unter Appearance kann man Show acrylic in tab row optional noch einstellen. Acryl-Look ist zwar nicht lebensnotwendig, sieht aber etwas hübscher aus.
  • Die Einstellung Tab width mode muss auf Compact stehen.

Bewundere deine neue PowerShell

Mit einem weiteren Kommando weckt man die Funktion predictive IntelliSense (im Modul PSReadLine) aus ihrem Dornröschenschlaf:

Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Code-Sprache: PowerShell (powershell)

Jetzt schau mal in deinem PowerShell Modulverzeichnis unterhalb oh-my-posh nach. Da gibt es viele Themes. Das Verzeichnis ist normalerweise hier:

%USERPROFILE%\Documents\PowerShell\Modules\oh-my-posh\themes
Code-Sprache: PowerShell (powershell)

Dort befinden sich >70 Profile, die ausgewählt werden können:

Wie man sieht, sind das alles JSON Dateien, also wenn man sein eigenes erstellen möchte – nur zu 🙂 Jedes einzelne dieser Profile kann mit einem simplen Einzeiler aktiviert werden:

Set-PoshPrompt -Theme <strong><THEMENAME></strong>
Code-Sprache: PowerShell (powershell)

Ab hier gilt wieder: Herumspielen ist angesagt um herauszufinden, welches Theme sinem am besten gefällt. Ein paar Beispiele zeige ich noch. Zuerst mein aktueller Favorit:

Set-PoshPrompt -Theme craver
Code-Sprache: PowerShell (powershell)

Das erzeugt ein sauberes optisch ansprechendes Terminal:

Ein anderes sehr aufgeräumtes Theme:

Set-PoshPrompt -Theme hunk
Code-Sprache: PowerShell (powershell)

Und noch 2 eher verspielte Themes:

Set-PoshPrompt -Theme powerlevel10_rainbow
Set-PoshPrompt -Theme powerlevel10k_rainbow
Code-Sprache: PowerShell (powershell)

In dem Beispiel wollte ich noch zeigen, dass man hier gar nichts falsch machen kann. Gibt man ein Profil an, das es gar nicht gibt, so wird das Standardprofil jandedobbeleer verwendet. Falls du die Links in diesem Artikel alle aufmerksam gelesen hast, dann weißt du, dass dies einer der oh-my-posh Entwickler ist (und nicht nur das).

Eine komplette Liets aller Themes inklusive Vorschau gibt es natürlich auch. Diese kann man mit einem weiteren Einzeiler aufrufen:

Get-PoshThemes
Code-Sprache: PowerShell (powershell)

Ist dir aufgefallen, dass die PowerShell beim tippen jetzt aus der Historie ähnliche Kommandos vorschlägt? Ungefähr so:

Mit den Pfeiltasten kann man direkt zum gewünschten Kommando springen. Dies kann dann entweder 1:1 gleich oder leicht angepasst ausgeführt werden. Drückt man nur Enter in der Auswahl, wird das gleiche Kommando ausgeführt:

Ist dir auch die aufgeräumte leere Tab-Leiste aufgefallen? Der aktuelle Tab zeigt nur den Namen des Ordners an in dem sich das Terminal befindet. Um dies zu erreichen hatte ich die kompakte Ansicht und keine Beschriftung eingestellt:

Und das war es „schon“! Viel Spaß mit der neuen hübschen PowerShell und dabei Kollegen mit all den tollen neuen Farben und Gimmicks im Terminal zu beeindrucken 🙂

Published by Andreas

Gründer von M365 Evangelists Cloud-Architekt, Strategieberater, Consultant für Microsoft Technologien Graph API Enthusiast, PowerShell Enthusiast

2 comments on “Wie man die PowerShell noch mächtiger (und hübscher) macht”

Comments are closed.