2011-04-20 129 views

回答

75

只要把函数prompt在PowerShell配置文件(notepad $PROFILE),例如:

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

或彩色:

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

'$记事本PROFILE'无法在Windows 7的管理员工作PowerShell提示符 – jcollum 2011-11-08 23:33:11

+16

啊,我看你需要首先创建配置文件:'新项目-itemtype文件-path $轮廓-force ' – jcollum 2011-11-08 23:40:00

+2

注意:您可以将提示功能粘贴到PowerShell中以更改提示路径,而不是将该功能保存在配置文件中,但每次启动PowerShell时都必须执行此操作。 – 2012-12-09 09:00:54

14

相关的上述评论,以下是Windows Server 2012以及Win7所需:

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

如果您使用多个用户名(例如,多个用户名)运行,那么我会提示以下内容作为提示。自己+生产登录):

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

(信用大卫I.麦金托什这一个)

+0

您还需要以管理员身份运行Powershell并执行'Set-ExecutionPolicy RemoteSigned'。 – qed 2016-06-06 15:20:29

3

如果你想自己做,然后Ocaso Protal's answer是要走的路。但是如果你像我一样懒惰,只想为你做点什么,那么我强烈推荐Luke Sampson's Pshazz package

为了向你展示你是多么的懒惰,我将提供一个快速教程。

  • Scoopscoop install pshazz
  • 使用安装Pshazz一个不错的预定义的主题(pshazz use msys
  • 饮料(根)啤酒

Pshazz还允许您创建自己的主题,这是就像配置JSON文件一样简单。 Check out mine看看它是多么容易!

0

在提示时,我喜欢当前时间戳并为网络驱动器解析驱动器号。为了使它更具可读性,我把它放在两行中,并用颜色演奏了一下。

随着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而不是(愚蠢)记事本
  • 如果你喜欢用断点调试你的prompt(),你应该将prompt-function重命名为其他任何东西(或者在另一个文件中试试)。否则,您可能最终陷入循环:当您停止调试时,会再次调用prompt(),并再次停止在断点处。很刺激,在第一...
0

这的Warren Stevens' answer版本避免了嘈杂“Microsoft.PowerShell.Core \ FileSystem”下的路径,如果你Set-Location到网络共享。

function prompt {"PS [$Env:[email protected]$Env:computername]$($PWD.ProviderPath)`n> "}