是否可以在PowerShell中覆盖Prompt函数?
问题描述:
我想定义一个命令在PowerShell控制台上设置自定义提示。 你可以用下面的脚本覆盖默认提示:是否可以在PowerShell中覆盖Prompt函数?
function Prompt {
"PS " + "[$(Get-Date)] " + $(Get-Location) + ">"
}
所以我想上面的脚本调用一个函数,例如:Set-CustomPrompt
。
我已经看到了StackOverflow上的一个解决方案,其中脚本是从外部ps1文件执行的,但我正在寻找一个解决方案,其中的定义位于同一个文件中。
答
有你Set-CustomPrompt
功能定义在global scope(see also)的Prompt
功能:
function Set-CustomPrompt {
function global:Prompt {
"PS [$(Get-Date)] $(Get-Location)>"
}
}
答
prompt
函数需要是全局作用域。但它可以调用另一个函数。
因此,与抽象的一个全局变量保存函数名称的定义了:
function Set-CustomPrompt {
....
$myCustomPropmtFunctionName = ...
}
function prompt {
&$myCustomPropmtFunctionName;
}