PS 5.1プロンプトに入るつもりです
~\Documents
の代わりに
C:\Users\USER1\Documents
しかし、「ビルディングブロック」の1つを試しているときにエラーが発生します
> $($executionContext.SessionState.Path.CurrentLocation) -replace $env:USERPROFILE, '~'
The regular expression pattern C:\Users\USER1 is not valid.
At line:1 char:3
...
これを含めるつもりです
$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"
}
これを機能させるにはどのようにエスケープすればよいですか$env:USERPROFILE
?
それは私の範囲内で機能しますかprompt
?
答え1
これにより、必要な置換が実行されます。
($executionContext.SessionState.Path.CurrentLocation).ToString().Replace($env:USERPROFILE, '~')
答え2
おそらく、正規表現置換内の変数を拡張するためにフォーマット文字列を使用したいでしょう:
$($executionContext.SessionState.Path.CurrentLocation) -replace ("{0}" -f $env:USERPROFILE), '~'
答え3
$HOME ディレクトリより上に移動すると、問題が発生する可能性があります。パスの最後の要素を常に取得したい場合は、次のいずれかを使用します。
'~\{0} -f ($executionContext.SessionState.Path.CurrentLocation).Path.Split('\')[-1]
'~\{0}' -f (Split-Path ($executionContext.SessionState.Path.CurrentLocation).Path -Leaf)