Antworten:
Sie müssen die Eingabeaufforderungsfunktion in Ihrem PowerShell-Profil anpassen ( %userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
). Es kann leer oder gar nicht vorhanden sein, wenn Sie es noch nie zuvor geändert haben.
Öffnen Sie Ihr Profil (z. B. die oben genannte Datei oder in PowerShell Notepad $profile
).
Fügen Sie Ihrem Profil Folgendes hinzu:
function prompt {
$p = Split-Path -leaf -path (Get-Location)
"$p> "
}
Speichern Sie das Profil
Starten Sie PowerShell neu
Optional . Wenn Sie eine Meldung erhalten, dass Sie keine Skripte ausführen dürfen, müssen Sie diese Zeile in PowerShell kopieren / einfügen:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
und neu starten.
Mithilfe von Windows PowerShell-Ausführungsrichtlinien können Sie die Bedingungen festlegen, unter denen Windows PowerShell Konfigurationsdateien lädt und Skripts ausführt.
Sie können eine Ausführungsrichtlinie für den lokalen Computer, den aktuellen Benutzer oder für eine bestimmte Sitzung festlegen. Sie können auch eine Gruppenrichtlinieneinstellung verwenden, um Ausführungsrichtlinien für Computer und Benutzer festzulegen.
Quelle: Microsoft-Dokumentation
GetCurrentDirectory
. Denken Sie daran, dass PowerShell nicht immer das Dateisystem bedeutet. Mit dem Registry-Snap-In könnte ich das nutzen cd hkcu:
und jetzt wäre die Eingabeaufforderung total ausgeschaltet.
$PWD
anstatt anzurufen Get-Location
. ZBfunction prompt { (Split-Path -Leaf $pwd) + '> ' }
prompt
in Ihrer Profildatei definieren . Es muss nur im globalen Sitzungsbereich liegen. Der Standardwert scheint äquivalent zu zu sein function prompt {"PS " + (Get-Location) + ">"}
, während er function prompt {""}
den gleichen Wert wie angibt function prompt {"PS>"}
. Verwenden Sie function prompt {" `b"}
diese Option , um eine leere Eingabeaufforderung zu erhalten (zumindest visuell ...).
Als zusätzliche Anmerkung konnte ich den Befehl @ Synetech erst ausführen, nachdem ich das $ -Profil erstellt hatte.
Tippen Sie $profile
und drücken Sie die Eingabetaste. Dadurch wird der Profilpfad angezeigt, auf den sich PowerShell stützt, auch wenn er nicht vorhanden ist (für mich nicht). Mein Pfad war anders als der, den @Synetech oben gepostet hat.
>$profile
C:\Users\[username]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Ich musste sowohl den WindowsPowerShell-Ordner als auch die Datei Microsoft.PowerShell_profile.ps1 erstellen.
Hinweis:
Wenn Sie posh-git verwenden (das bei Verwendung des GitHub-Desktops installiert wird), überschreibt das Skript von @ Synetech die Eingabeaufforderung von posh-git. Zusätzliche Eingabeaufforderungsskripte für posh-git hier .
%userprofile%
erweitert aufC:\Users\[username]
$Env:userprofile
entsprichtecho %userprofile%
Ändern Sie die Eingabeaufforderung, um den aktuellen Ordner ohne vollständigen Pfad und größer als das Symbol am Ende anzuzeigen:
Ein Weg könnte sein:
Function Prompt { "$( ( get-item $pwd ).Name )>" }
Oder:
Function Prompt { "$( Split-Path -leaf -path (Get-Location) )>" }
Oder:
Function Prompt { "$( ( Get-Location | Get-Item ).Name )>" }
\\myserver\my\path
.
Ich fand das ziemlich einfach - indem ich die Antwort von @ Synetech und die Informationen aus PowerShell-Profilen kombinierte . Weil ich ein Neuling bei PS bin. Meine Schritte (für vscode):
einfügen
function prompt {
$p = Split-Path -leaf -path (Get-Location)
"$p> "
}
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser (an Ihrer PS-Eingabeaufforderung aus der SuperUse-Antwort)
vscode neu laden
Also meistens @ Synetechs Antwort (upvoted) mit ein bisschen Starthilfe - besonders Schritt 2 macht dies sehr einfach.
Die folgende einzelne Zeile funktioniert gut für mich
(Get-Location | Get-Item) .Name
[System.IO.Directory]::GetCurrentDirectory()
Stellt nicht den aktuellen Speicherort von Powershell dar, sondern das Prozessarbeitsverzeichnis, das nicht immer identisch ist. Ersetzen durchGet-Location