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 pshazzscoop 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> "}