Windows PowerShell:更改命令提示符
使用Windows PowerShell如何更改命令提示符? 例如,默认提示说
PS C:\Documents and Settings\govendes\My Documents>
我想自定义该string。
谢谢
只需在Powershellconfiguration文件( notepad $PROFILE
)中添加一个函数prompt
,例如:
function prompt {"PS: $(get-date)>"}
或着色:
function prompt { Write-Host ("PS " + $(get-date) +">") -nonewline -foregroundcolor White return " " }
与上述评论相关,Windows Server 2012以及Win7需要以下内容:
new-item -itemtype file -path $profile -force notepad $PROFILE
如果您使用多个用户名(例如,您自己+生产login名)运行,我会build议将以下内容作为提示:
function Global:prompt {"PS [$Env:username]$PWD`n>"}
(这一点可以归功于David I. McIntosh)
如果你想自己做,那么奥卡索普罗塔尔的答案是要走的路。 但是如果你像我一样懒,只是想为你做点什么,那么我强烈推荐Luke Sampson的Pshazz包 。
只是为了向你展示你的懒惰,我会提供一个快速的教程。
- 用Scoop
scoop install pshazz
(scoop install pshazz
) - 使用一个很好的预定义主题(
pshazz use msys
) - 喝(根)啤酒
Pshazz还允许您创build自己的主题,就像configurationJSON文件一样简单。 看看我是多么容易!
在提示时,我喜欢当前的时间戳,并parsingnetworking驱动器的驱动器号。 为了使它更具可读性,我把它分成两行,并用颜色演奏了一下。
CMD,我结束了
PROMPT=$E[33m$D$T$H$H$H$S$E[37m$M$_$E[1m$P$G
对于PS,我得到了相同的结果:
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 " " }
这是一个更可读的一点:-)
BTW:
- 我更喜欢
powershell_ise.exe $PROFILE
而不是(愚蠢)记事本 - 如果你喜欢用断点来debugging你的提示(),你应该把提示函数重命名为其他东西(或者在另一个文件中试试)。 否则,最终可能会出现一个循环:当您停止debugging时,会再次调用prompt(),并再次停在断点处。 相当烦人,起初…
如果您Set-Location
为networking共享,则Warren Stevens的答案的此版本将避免path中的嘈杂“Microsoft.PowerShell.Core \ FileSystem”。
function prompt {"PS [$Env:username@$Env:computername]$($PWD.ProviderPath)`n> "}