Ich möchte in meine PS 5.1-Eingabeaufforderung gelangen
~\Documents
anstatt
C:\Users\USER1\Documents
Aber beim Ausprobieren eines der "Bausteine" erhalte ich eine Fehlermeldung
> $($executionContext.SessionState.Path.CurrentLocation) -replace $env:USERPROFILE, '~'
The regular expression pattern C:\Users\USER1 is not valid.
At line:1 char:3
...
Ich möchte dies einschließen in
$ESC = [char]27
$BLUE="$ESC[1;34m"
$RESET="$ESC[0m"
function prompt
{
$cwd = $($executionContext.SessionState.Path.CurrentLocation) ;
# $my_new_var=USE THE REPLACING COMMAND
"$BLUE$my_new_var$('>' * ($nestedPromptLevel + 1)) $RESET"
}
Wie muss ich entkommen, $env:USERPROFILE
damit dies funktioniert?
Würde das in meinem funktionieren prompt
?
Antwort1
Dadurch wird der gesuchte Ersatz durchgeführt:
($executionContext.SessionState.Path.CurrentLocation).ToString().Replace($env:USERPROFILE, '~')
Antwort2
Vielleicht möchten Sie Formatzeichenfolgen verwenden, um die Variable innerhalb von Regex-Ersetzungen zu erweitern:
$($executionContext.SessionState.Path.CurrentLocation) -replace ("{0}" -f $env:USERPROFILE), '~'
Antwort3
Sie könnten in Schwierigkeiten geraten, wenn Sie sich über Ihr $HOME-Verzeichnis hinaus bewegen. Wenn Sie immer das letzte Element des Pfads möchten, würde ich eine der folgenden Möglichkeiten verwenden:
'~\{0} -f ($executionContext.SessionState.Path.CurrentLocation).Path.Split('\')[-1]
'~\{0}' -f (Split-Path ($executionContext.SessionState.Path.CurrentLocation).Path -Leaf)