是否可以在PowerShell中覆盖Prompt函数?

问题描述:

我想定义一个命令在PowerShell控制台上设置自定义提示。 你可以用下面的脚本覆盖默认提示:是否可以在PowerShell中覆盖Prompt函数?

function Prompt { 
    "PS " + "[$(Get-Date)] " + $(Get-Location) + ">" 
} 

所以我想上面的脚本调用一个函数,例如:Set-CustomPrompt

我已经看到了*上的一个解决方案,其中脚本是从外部ps1文件执行的,但我正在寻找一个解决方案,其中的定义位于同一个文件中。

有你Set-CustomPrompt功能定义在global scopesee also)的Prompt功能:

function Set-CustomPrompt { 
    function global:Prompt { 
     "PS [$(Get-Date)] $(Get-Location)>" 
    } 
}

只要在你的代码中定义提示函数不适合你? (请参阅:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_prompts?view=powershell-5.1

prompt函数需要是全局作用域。但它可以调用另一个函数。

因此,与抽象的一个全局变量保存函数名称的定义了:

function Set-CustomPrompt { 
    .... 
    $myCustomPropmtFunctionName = ... 
} 

function prompt { 
    &$myCustomPropmtFunctionName; 
}