Powershellにコマンドプロンプトを継承させる方法はありますか?

Powershellにコマンドプロンプトを継承させる方法はありますか?

cmd シェルでは、PROMPT コマンドなどを使用してプロンプトを設定 (および保存) できます。ただし、cmd から Powershell に入ると、デフォルトの Windows プロンプト (通常は現在のディレクトリ) に戻ります。

Powershell で現在の Windows プロンプトを強制的に使用させる方法はありますか?

答え1

非常に役立つコメントのおかげで、これが機能するようになりました。念のため、他の誰かが同じ問題に遭遇した場合に備えて:

$profile

Powershellプロファイルが存在する(または存在するはずの)場所を返します。しない存在する場合は、次のコマンドで作成できます。

new-item -itemtype file -path $profile -force

ここでは、プロンプト関数を記述するだけです。私は通常、現在のユーザーに設定します。

function prompt {"PS: $(echo 'RobbieDee')>"}

答え2

Promptグローバルに設定される%UserProfile%\Documents\WindowsPowerShell\profile.ps1

  • 色なし:

    Function set-prompt {
      "$ESC[$($executionContext.SessionState.Path.CurrentLocation)$('$' * ($nestedPromptLevel + 1)) $ESC[0m"
    }
    
  • 色付き:

    switch ($Action) {
    
        "Default" {
            Function global:prompt {
                if (test-path variable:/PSDebugContext) { '[DBG]: ' }
                    write-host " "
                    write-host ("$ESC[48;2;40;40;40m$ESC[38;2;170;210;0m$(Get-Location) $ESC[0m $ESC[0m")
    
                if ( $host.UI.RawUI.WindowTitle -match "Administrator" ) {
                    $Host.UI.RawUI.ForegroundColor = 'Red'
                    $(if ($nestedpromptlevel -ge 1) {
                        write-host ('PS $$ ') -ForegroundColor Red -NoNewLine
                    } else {
                        write-host ('PS $ ') -ForegroundColor Red -NoNewLine
                    })
                } else {
                    $(if ($nestedpromptlevel -ge 1) {
                        write-host ('PS $$ ') -ForegroundColor Blue -NoNewLine
                    } else {
                        write-host ('PS $ ') -ForegroundColor Blue -NoNewLine
                    })
                }
    
                return " "
            }
        }
    }
    
    set-prompt Default
    
    • ユーザーには色付きのテキストプロンプトを表示し、管理者には赤色のテキストプロンプトを表示します。
    • プロファイルのオンザフライ切り替えが可能:
      • Default下のセクションをコピー/貼り付けして、それに応じて編集します(名前を含む、例Default. セッションを再ロードし、set-prompt Default||でプロンプトを切り替えます。set-prompt <name>

関連情報