Windows PowerShell:コマンドプロンプトの変更


85

Windows PowerShellを使用して、コマンドプロンプトを変更するにはどうすればよいですか?

たとえば、デフォルトのプロンプトには

PS C:\Documents and Settings\govendes\My Documents>

その文字列をカスタマイズしたいと思います。

回答:


107

関数promptをPowerShellプロファイル(notepad $PROFILE)に配置するだけです。例:

function prompt {"PS: $(get-date)>"}

または色付き:

function prompt
{
    Write-Host ("PS " + $(get-date) +">") -nonewline -foregroundcolor White
    return " "
}

2
notepad $PROFILE管理者のPowerShellプロンプトからのWindows7では機能しません
jcollum 2011年

18
ああ、私はあなたが最初のプロファイルを作成する必要があることを参照してくださいnew-item -itemtype file -path $profile -force
jcollum

4
注:プロファイルに関数を保存する代わりに、PowerShellにプロンプ​​ト関数を貼り付けてプロンプトパスを変更できますが、PowerShellを起動するたびにこれを行う必要があります。
ラリーバトル

3
また、Powershellを管理者として実行して実行する必要がありますSet-ExecutionPolicy RemoteSigned
qed 2016

1
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted現在のユーザーのみを変更したい場合、または管理者として実行できない場合は@qed 。
cz

21

Ocaso Protalの回答へのコメントに関連して、Windows Server2012およびWindows7(PowerShellウィンドウ内)には次のものが必要です。

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

複数のユーザー名で実行する場合(たとえば、自分自身と本番ログイン)、プロンプトとして次のことをお勧めします。

function Global:prompt {"PS [$Env:username]$PWD`n>"} 

(クレジットはDavid I. McIntoshに送られます。)


1
また、Powershellを管理者として実行して実行する必要がありますSet-ExecutionPolicy RemoteSigned
qed 2016

11

プロンプトで、ネットワークドライブの現在のタイムスタンプと解決されたドライブ文字が気に入っています。読みやすくするために、2行に並べて、少し色を変えてみました。

CMDで、私は

PROMPT=$E[33m$D$T$H$H$H$S$E[37m$M$_$E[1m$P$G

PowerShellの場合、次の場合と同じ結果が得られました。

function prompt {
    $dateTime = get-date -Format "dd.MM.yyyy HH:mm:ss"
    $currentDirectory = $(Get-Location)
    $UncRoot = $currentDirectory.Drive.DisplayRoot

    write-host "$dateTime" -NoNewline -ForegroundColor White
    write-host " $UncRoot" -ForegroundColor Gray
    # Convert-Path needed for pure UNC-locations
    write-host "PS $(Convert-Path $currentDirectory)>" -NoNewline -ForegroundColor Yellow
    return " "
}

これはもう少し読みやすいです:-)

ところで:

  • powershell_ise.exe $PROFILEは(ばかげた)メモ帳の代わりに好みます。
  • ブレークポイントを使用してprompt()をデバッグする場合は、prompt-functionの名前を別の名前に変更する必要があります(または別のファイルで試してください)。そうしないと、ループが発生する可能性があります。デバッグを停止すると、prompt()が再度呼び出され、ブレークポイントで再び停止します。最初はかなりイライラする...

まさに私が探していたものです!
グレンリトル

8

あなたがそれを自分でやりたいのなら、OcasoProtalの答えは行く方法です。しかし、あなたが私のように怠け者で、あなたのために何かをしたいだけなら、LukeSampsonのPshazzパッケージを強くお勧めします

あなたがどれほど怠惰になることができるかを示すために、私は簡単なチュートリアルを提供します。

  • ScoopでPshazzをインストールする(scoop install pshazz
  • 事前定義された素敵なテーマを使用する(pshazz use msys
  • (ルート)ビールを飲む

Pshazzでは、JSONファイルを構成するのと同じくらい簡単な独自のテーマを作成することもできます。それがどれほど簡単かを確認するために私のものチェックしてください!


7

私が使用するドライブ文字を表示するには、次のようにします。

            function prompt {(get-location).drive.name+"\...>"}

次に、使用するパスに戻ります。

            function prompt {"$pwd>"}

5

このバージョンのWarrenStevensの回答は、Set-Locationネットワーク共有へのパスでノイズの多い「Microsoft.PowerShell.Core \ FileSystem」を回避します。

function prompt {"PS [$Env:username@$Env:computername]$($PWD.ProviderPath)`n> "} 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.