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

Is it possible to overwrite the Prompt function from a function in PowerShell?

我正在尝试定义一个命令来在 PowerShell 控制台上设置自定义提示。 您可以使用以下脚本覆盖默认提示:

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

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

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

仅仅在代码中定义提示功能不适合你? (参见: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;
}

让你的 Set-CustomPrompt 函数定义 global scope (see also 中的 Prompt 函数):

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