devAlice
← Windows

PowerShell 7 + oh-my-posh + Module — eine Stunde pro Woche in Windows Terminal sparen

PowerShell 7-Alltagsumgebung in Windows Terminal — pwsh-Installation, Profil, oh-my-posh-Theme, sechs essenzielle Module.

Windows' eingebaute PowerShell 5.1 ist nicht plattformübergreifend und leidet unter Modulkompatibilitätsproblemen. PowerShell 7 (pwsh) ist der Standard. Kombiniert mit oh-my-posh und sechs Modulen wird macOS's zsh + starship erreicht oder übertroffen.

Dieser Leitfaden ist ein 30-minütiges PowerShell-Setup, nachdem die Windows-Ersteinrichtung winget installiert hat.

TL;DR

  1. pwsh 7 installierenwinget install Microsoft.PowerShell
  2. pwsh als Standard Windows Terminal-Shell setzen
  3. Profil aktivieren$PROFILE bearbeiten
  4. oh-my-posh — Prompt (Git-Status / Ausführungszeit / Exit-Code)
  5. Sechs Module — Terminal-Icons / posh-git / PSReadLine / z / PSFzf / CompletionPredictor

Voraussetzungen

  • Windows 10/11 mit winget (Windows-Ersteinrichtung)
  • Windows Terminal installiert (winget oder MS Store)
  • Ein Nerd Font (für oh-my-posh-Glyphen)

1. PowerShell 7 installieren

winget install --id Microsoft.PowerShell -e

Einen neuen Tab öffnen und pwsh ausführen. Bestätigen:

$PSVersionTable.PSVersion
# Major: 7, Minor: 4+

2. pwsh als Standard-Shell setzen

Windows Terminal → Einstellungen (Strg+,) → Start:

  • Standardprofil: PowerShell (7) — das dunkelblau-Symbol (nicht 5.1)

3. Profil einrichten

# Profildateipfad
$PROFILE
# C:\Users\me\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
 
# Erstellen, falls fehlend
if (-not (Test-Path $PROFILE)) { New-Item -Type File -Path $PROFILE -Force }
 
# Bearbeiten
notepad $PROFILE
# oder
code $PROFILE

4. oh-my-posh installieren

winget install JanDeDobbeleer.OhMyPosh -s winget

Neues Terminal → Themes vorschauen:

Get-PoshThemes

Falls Pfeile/∋/Ausführungszeit als Kästchen erscheinen, fehlt ein Nerd Font:

  • JetBrainsMono Nerd Font oder
    oh-my-posh font install JetBrainsMono
  • Windows Terminal → Einstellungen → Profil → Darstellung → Schriftfamilie: JetBrainsMono Nerd Font

4.1 Zum Profil hinzufügen

An $PROFILE anhängen:

# oh-my-posh aktivieren
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression

Themes sind Geschmackssache (jandedobbeleer, paradox, negligible, craver usw.). Alle Themes befinden sich in $env:POSH_THEMES_PATH.

5. Sechs Module

# Alle auf einmal
Install-Module -Name Terminal-Icons, posh-git, PSReadLine, z, PSFzf -Scope CurrentUser -Force
Install-Module -Name CompletionPredictor -AllowPrerelease -Scope CurrentUser -Force

5.1 Im Profil registrieren

In $PROFILE:

# 5.1 Icons (Dateityp-Icons in ls-Ausgabe)
Import-Module Terminal-Icons
 
# 5.2 posh-git (Git-Status im Prompt)
Import-Module posh-git
# Wenn das oh-my-posh-Theme bereits Git-Status hat, kann das doppelt sein. Eines wählen.
 
# 5.3 PSReadLine (Bash-Tasten, Verlauf, Vervollständigungsfarbe)
Import-Module PSReadLine
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineKeyHandler -Chord Tab -Function Complete  # Bash-Stil
 
# 5.4 z (zu häufigen Verzeichnissen springen — 'z proj')
Import-Module z
 
# 5.5 PSFzf (Strg+R Verlauf, Strg+T Dateisuche)
Import-Module PSFzf
Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'
# fzf selbst: winget install junegunn.fzf
 
# 5.6 CompletionPredictor (befehlsbasierte Tab-Vorhersagen)
Import-Module CompletionPredictor

6. Aliasse / Funktionen

Eigene zu $PROFILE hinzufügen:

# ls-Alternativen (UNIX-freundlich)
Set-Alias ll Get-ChildItem
function la { Get-ChildItem -Force @args }
 
# Schnelles Neuladen
function reload-profile { . $PROFILE }
 
# Sofortige Admin-Shell
function admin { Start-Process pwsh -Verb RunAs }
 
# Git-Shortcuts
function gs { git status -sb }
function gd { git diff $args }
function gpl { git pull --rebase --autostash }
 
# Schnelles WSL
function w { wsl @args }

7. Überprüfung

# Profil neu laden
. $PROFILE
 
# 1. oh-my-posh-Prompt — in ein Git-Repo wechseln, um den Branch zu sehen
cd C:\Users\me\Documents\my-repo
 
# 2. PSReadLine — Pfeiltaste nach oben für Verlauf, tippen und grauen Vorschlag sehen → → drücken zum Akzeptieren
git st<-Taste>   # wird 'status' vorhergesagt?
 
# 3. z — zu einem zuvor besuchten Ordner springen
z my-repo
 
# 4. Strg+R — interaktive Verlaufssuche (fzf)
 
# 5. ll — farbenfrohes ls mit Terminal-Icons

Fehlerbehebung

oh-my-posh zeigt Kästchen statt Icons

Nerd Font nicht angewendet. Windows Terminal → Einstellungen → Profil → Darstellung → Nerd Font setzen.

Install-Module-Berechtigungsfehler

  • Beim ersten Mal: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
  • Ohne -Scope CurrentUser wird manchmal Admin erfragt

Profil wird nicht geladen

  • pwsh vs. Windows Terminal, das PowerShell 5.1 (powershell.exe) startet, haben unterschiedliche Profilpfade
  • 5.1: ~/Documents/WindowsPowerShell/Microsoft.PowerShell_profile.ps1
  • 7: ~/Documents/PowerShell/Microsoft.PowerShell_profile.ps1
  • Mit $PSVersionTable.PSVersion bestätigen

posh-git ist langsam (großes Repo)

git status bei jedem Prompt ist in großen Monorepos langsam. Wenn das oh-my-posh-Theme bereits ein Git-Segment hat, posh-git deaktivieren oder $GitPromptSettings.EnableFileStatus = $false setzen.

Strg+R funktioniert nicht

  • fzf nicht installiert — winget install junegunn.fzf
  • PSFzf installiert, aber fzf.exe nicht im PATH

Nur Graustufen-Farben

Windows Terminal-Farbschema falsch gesetzt. Einstellungen → Schema auf Campbell oder One Half Dark wechseln.

Referenzen

Changelog

  • 2026-05-12: Erster Entwurf. pwsh 7 + oh-my-posh + sechs Module + Aliasse/Funktionen + fünf Fehlerbehebungsfälle.