PowerShell定义了一个默认的prompt
函数,如果你安装PoSh-Git之类的函数,那么它定义了另一个函数。我自己编写了一个自定义提示,允许我查看何时为当前工作目录位置设置了“书签”。
我想知道的是,编写此类提示的最佳做法是什么,以便它不会与其他人发生冲突(例如,如果我当前的工作目录中有一个设置了和是一个Git存储库)?
有没有办法捕获当前的定义并在我的新提示开始时执行它,所以我得到了两者的输出?
答案 0 :(得分:1)
Get-Help About_Prompts
建议您可以检索当前提示的脚本块,如下所示:
(Get-Command Prompt).ScriptBlock
当然,你不能在函数中执行此操作,以免创建无限循环,所以如果你把它粘在你的个人资料或模块或其他东西中:
$promptscript = (Get-Command Prompt).ScriptBlock
Function Prompt
{
Write-Output ("* " + (Invoke-Command -Script $promptscript))
}
在当前显示的任何提示之前,你会得到一个星号,但是这依赖于现有的Prompt函数的ScriptBlock属性 - 如果不是(例如填充在DLL中)那么你可能已经没有了运气,除非您可以将函数复制到另一个名称(假设它甚至可以在DLL中执行此操作...)
注意:您需要调用上面的AFTER,其他所有内容都已加载,因此可能需要在您的配置文件中手动加载相关模块然后设置提示,或者创建一个函数来加载模块然后设置提示。
答案 1 :(得分:0)
因此,看看如何实现posh-git,一种方法似乎是:
Write-
,使自定义提示功能成为Write-Prompt
功能。Write-VcsStatus
)然后调用自己的自定义函数,然后再返回" > " 简而言之,不要使用多个配置文件功能,只需使用Write-Host
在可以从一个全局prompt
覆盖中调用的函数中编写定制的提示数据。