我在 Windows 7 上使用 PowerShell。如何配置 PowerShell 以便它仅在 shell 提示符中显示当前文件夹名称(而不是完整路径)?
例如,C:\folder\directory\name>
我想要 ,而不是name>
。
答案1
您必须在 PowerShell 配置文件中自定义提示功能(%userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
);如果您以前从未修改过它,它可能为空白,甚至不存在。
打开您的个人资料(例如,打开上述文件或在 PowerShell 中打开
Notepad $profile
)将以下内容添加到您的个人资料中:
function prompt { $p = Split-Path -leaf -path (Get-Location) "$p> " }
保存配置文件
重启 PowerShell
选修的。如果您收到一条消息,提示您无权运行脚本,那么您需要在 PowerShell 中复制/粘贴此行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
然后重新启动。
Windows PowerShell 执行策略允许您确定 Windows PowerShell 加载配置文件和运行脚本的条件。
您可以为本地计算机、当前用户或特定会话设置执行策略。您还可以使用组策略设置来为计算机和用户设置执行策略。
来源:Microsoft 文档
答案2
更改提示以显示当前文件夹,但不显示完整路径,并且在末尾显示大于号:
一种方法可能是:
Function Prompt { "$( ( get-item $pwd ).Name )>" }
或者:
Function Prompt { "$( Split-Path -leaf -path (Get-Location) )>" }
或者:
Function Prompt { "$( ( Get-Location | Get-Item ).Name )>" }
答案3
另外需要注意的是,我做不到Synetech 的命令直到我第一次创建$profile。
打开 PowerShell
输入
$profile
并按回车键。这将显示 PowerShell 所依赖的配置文件路径,即使它不存在(对我来说不存在)。我的路径与Synetech 发布的内容。>$profile C:\Users\[username]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
我必须创造WindowsPowerShell文件夹和Microsoft.PowerShell_配置文件.ps1文件。
添加Synetech 的代码并重新启动 PowerShell。
笔记:
如果你正在使用 posh-git(使用 GitHub 桌面版时安装),Synetech 的脚本将覆盖 posh-git 提示。posh-git 的其他提示脚本这里。
答案4
我想要一个更复杂的提示,于是构造了一个新提示。这个答案并不是要取代当前的答案,而是为了给后来偶然发现这个问题的人提供补充。这个提示将完全支持网络路径,而且看起来非常优雅。
function Prompt
{
write-host "PS " -ForegroundColor Magenta -NoNewline
write-host (get-date -Format "yyyy-MM-dd HH:mm:ss") -ForegroundColor Yellow -NoNewline
write-host " | " -ForegroundColor DarkGray -NoNewline
write-host "\\$env:COMPUTERNAME " -NoNewline
write-host " | " -ForegroundColor DarkGray -NoNewline
if( (Get-Location).Drive -ne $null)
{
write-host (Get-Location)
$networkdrive = $false
}
else
{
$networkdrive = $true
$first, $second, $third, $folder = (Get-Location).path.Split("\")
write-host "\" -NoNewline
$folder | foreach-object {
write-host "\$_" -NoNewline
}
write-host
}
write-host "PS " -ForegroundColor Magenta -NoNewline
if( (Get-Location).Drive -ne $null)
{
write-host "$((Get-Location).Drive):\" -NoNewline
}
else
{
write-host "\\$((Get-Location).path.Split("\")[3])\" -NoNewline
}
if( (Get-Location).path.Split("\").Count -gt 2 -and $networkdrive -eq $false)
{
write-host "…\" -NoNewline
}
if( (Get-Location).path.Split("\").Count -gt 5 -and $networkdrive -eq $true)
{
write-host "…\" -NoNewline
} write-host "$((Get-Location).path.Split("\")[-1])" -NoNewline
write-host ">" -NoNewline
return " "
}
它将显示如下提示:
PS 2021-03-24 02:03:39 | \\MYPC | \\Server\Share\Folder1\Folder2
PS \\Server\…\Folder2> cd c:\Users\User
PS 2021-03-24 02:03:39 | \\MYPC | C:\Users\User
PS C:\…\User>