Prompt in PowerShell anpassen


    Tags:

    Powershell-LogoPraktisch alle Shells und Kommando­zeilen bieten eine Eingabe­auf­forderung, die dem User wesent­liche Infor­mationen zu seinem Kontext liefert. PowerShell gibt dort standard­mäßig aber nur Auskunft über das aktuelle Verzeichnis. Da sein Aussehen über eine function bestimmt wird, sind der Gestal­tung des Prompts jedoch keine Grenzen gesetzt.

    Im alten Kommandointerpreter ist die Anpassung des Prompts auf die Verwendung einiger vordefinierter Variablen beschränkt. PowerShell hingegen definiert eine Funktion namens prompt(), die das Aussehen der Eingabeauf­forderung bestimmt. Sie sieht per Voreinstellung folgendermaßen aus:

    Baut man eine Remote-Session auf, dann fügt Enter-PSSession den Namen des Remote-Rechners am Anfang des Prompts ein. Es ist jedoch nicht Cmdlets vorbehalten, die Eingabeaufforderung anzupassen. Man kann dies tun, indem man die Funktion prompt() einfach überschreibt.

    Prompt-Funktion modifizieren

    Dabei bietet sich an, sie nicht von Grund auf neu zu schreiben, sondern einfach zu modifizieren. Wenn man auf die Anzeige des Debug-Modus verzichten und stattdessen die aktuelle Uhrzeit vor dem Prompt einblenden möchte, dann kann man dies folgendermaßen erreichen:

    Alternativ könnte man den Namen des aktuellen Users anzeigen. Dabei bietet es sich an, die Umgebungs­variable USERNAME auszulesen:

    Aktuelle Uhrzeit oder Benutzernamen in den Prompt übernehmen

    Farben ändern

    Eine beliebte Änderung der Eingabeauf­forderung betrifft deren farbliche Gestaltung. Diese kann man durch Verwendung von Escape-Sequenzen erreichen. Das folgende Beispiel modifiziert die Standard­funktion so, dass der Prompt in Rot (Code 31) dargestellt wird.

    Die Farbgebung muss sich nicht auf Geschmacksfragen beschränken, sondern kann auch nützliche Informationen transportieren.

    So könnte man den Prompt immer dann einfärben, wenn ein User mit administrativen Rechten angemeldet ist. Im folgenden Beispiel erscheint die Eingabeauf­forderung bei einem Admin in Rot, bei einem Standard­benutzer im üblichen Weiß (Code 27):

    Farben des Prompts mit Hilfe von Escape-Sequenzen anpassen

    Nicht alle PowerShell-Hosts unterstützen die Terminal-Sequenzen, so dass man sich in diesem Fall anders behelfen muss. Das gilt etwa für die PowerShell ISE. Dort könnte man die Farben für Admins versus Standard-User so anpassen:

    Prompt für administrativen Benutzer in der PowerShell ISE einfärben

    Grundsätzlich kann man über diese Beispiele hinaus jedes beliebige Cmdlet oder jede Variable für die Gestaltung des Prompts verwenden, sofern einem dies nützlich erscheint.

    Dauerhafte Änderung nur über Profile

    Beim Überschreiben der Funktion prompt() sollte man bedenken, dass sich dies immer nur auf die jeweilige Sitzung auswirkt. Startet man eine neue Session, dann erhält man wieder die übliche Eingabe­auf­forderung.

    Möchte man die Änderungen permanent beibehalten, dann muss man die modifizierte Version von prompt() in das PowerShell-Profil aufnehmen.

    Zusammenfassung

    Anders als bei cmd.exe, wo man auf einige vordefinierte Variablen für die Gestaltung des Prompts angewiesen ist, stehen in PowerShell praktisch alle sprachlichen Mittel zur Verfügung, um Informationen in die Eingabe­aufforderung zu integrieren. Dabei stellt sich natürlich die Frage, ob das Ergebnis immer sinnvoll ist.

    So kann man Farben zwar für optische Spielereien nutzen, aber auch, um nützliche Informationen zum aktuellen Kontext zu liefern. Dabei lassen sich die Escape-Sequenzen jedoch nicht auf allen PowerShell-Hosts einsetzen, so dass man dort stattdessen etwa zu Write-Host greifen muss.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links