PSReadLine

Allgemeine Infos

PSReadLine verbessert die Befehlszeile der PowerShell-Konsole. Es bringt Syntaxhervorhebung, Fehlermarkierung, mehrzeiliges Bearbeiten, eine persistente History über Sitzungen hinweg, Bearbeitungsmodi für Windows, Emacs und Vi sowie Predictive IntelliSense. PSReadLine funktioniert im Konsolenhost, in Windows Terminal und in Visual Studio Code, nicht in der Windows PowerShell ISE.

Versionen: Aktuell ist PSReadLine 2.4.5, enthalten in PowerShell 7.6. Windows PowerShell 5.1 liefert die alte Version 2.0.0 mit, die aktuelle Version lässt sich dort nachinstallieren. Einige Funktionen wie Predictor-Plug-ins brauchen PowerShell 7.2 oder neuer.

Korrektur zum Standardverhalten: Predictive IntelliSense ist seit PSReadLine 2.2.6 standardmäßig aktiv, nicht erst ab einer bestimmten PowerShell-Version. Der Standard hängt von der Umgebung ab: HistoryAndPlugin bei Terminals mit VT-Unterstützung und PowerShell 7.2 oder neuer, History bei VT-Unterstützung und älterer PowerShell, None ohne VT-Unterstützung.

Funktionsweise & Details

Wichtige Funktionen und Einstellungen:

  1. Predictive IntelliSense zeigt Vorschläge aus der History und aus Plug-ins. Set-PSReadLineOption -PredictionSource steuert die Quelle (None, History, Plugin, HistoryAndPlugin). Die InlineView zeigt einen Vorschlag hinter dem Cursor, Pfeil rechts übernimmt ihn. Die ListView zeigt mehrere Vorschläge, F2 wechselt zwischen beiden Ansichten.
  2. Plug-ins: Az.Tools.Predictor schlägt Azure-PowerShell-Befehle vor, CompletionPredictor bringt Tab-Vervollständigung in die Vorschlagsliste.
  3. History: Die Datei $($Host.Name)_history.txt liegt unter Windows in $Env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine. -HistorySaveStyle steuert das Speichern (SaveIncrementally, SaveAtExit, SaveNothing).
  4. Schutz sensibler Eingaben: Zeilen mit password, asplaintext, token, apikey oder secret landen nicht in der History-Datei. Seit 2.2.0 sind SecretManagement-Cmdlets wie Get-Secret davon ausgenommen. Mit -AddToHistoryHandler definierst Du eigene Filter.
  5. Set-PSReadLineKeyHandler bindet Tasten an Funktionen oder Scriptblocks, z. B. Pfeil hoch an HistorySearchBackward.

Vorteile & Nutzen

  • Schnelleres Arbeiten: Vorschläge aus der History ersparen das erneute Tippen langer Befehle
  • Weniger Tippfehler: Syntaxhervorhebung zeigt unvollständige Befehle und Klammern vor dem Ausführen
  • Persistente History: Befehle aus früheren Sitzungen sind sofort wieder abrufbar
  • Eingebauter Schutz: Zeilen mit Kennwörtern oder Tokens werden nicht in die History-Datei geschrieben

Praxisbeispiel

Die Admins eines kommunalen IT-Dienstleisters mit 220 Mitarbeitenden arbeiten täglich mit langen Exchange- und Graph-Befehlen. Auf den Jump-Hosts mit Windows PowerShell 5.1 war noch PSReadLine 2.0.0 ohne Vorschläge aktiv. Die IT installiert PSReadLine aktuell nach, setzt im gemeinsamen Profil die ListView und ergänzt einen AddToHistoryHandler, der Befehle mit Connect-Parametern für Zertifikate nicht speichert. Wiederkehrende Befehle sind jetzt mit wenigen Tastendrücken abrufbar.

Worauf sollte man achten?

  • Die History-Datei enthält alle eingegebenen Befehle im Klartext, Kennwörter deshalb nie direkt in die Konsole tippen
  • Für eigene sensible Muster einen AddToHistoryHandler ergänzen, die eingebaute Liste deckt nicht alles ab
  • Unter Windows PowerShell 5.1 PSReadLine aktualisieren, Version 2.0.0 kennt keine Vorschläge
  • Auf geteilten Jump-Hosts prüfen, wer Lesezugriff auf die Benutzerprofile und damit auf die History hat

Lizenz & Verfügbarkeit

PSReadLine ist kostenlos und Open Source. Es ist in PowerShell 7 enthalten (PowerShell 7.6 mit Version 2.4.5), Windows PowerShell 5.1 bringt Version 2.0.0 mit, neuere Versionen kommen aus der PowerShell Gallery. Stand: Oktober 2026.

Fazit

PSReadLine ist der größte Komfortgewinn in der PowerShell-Konsole. Aktualisiere es auch unter 5.1 und achte darauf, dass keine Geheimnisse in der History-Datei landen.