从模块修改和还原PowerShell提示符

Ste*_*ngs 3 powershell scope

我正在编写一个PowerShell模块,用于与远程服务进行交互.当连接到远程服务时(通过模块中的功能),我想在提示符前面添加用户名.断开连接后,我想删除用户名.

我想我可以通过复制全局prompt函数来实现这一点,然后在断开连接时恢复它:

# Doesn't work
function Connect {
    Copy-Item function:prompt function:prompt_old
    function global:prompt { "[Username] $(prompt_old)" }
}
function Disconnect {
    Copy-Item function:prompt_old function:prompt -Force
}
Run Code Online (Sandbox Code Playgroud)

但是,Copy-Item不在全局范围内复制.因此,prompt抛出一个CommandNotFoundException和断开功能不能代替promptprompt_old.

有没有办法可以从模块函数修改,然后恢复PowerShell提示符?

Fro*_* F. 7

您可以在工作时将函数存储在变量中.

备份使用:

$global:prompt_old = get-content function:\prompt
Run Code Online (Sandbox Code Playgroud)

然后,您可以修改提示,稍后使用以下命令恢复:

set-content function:\prompt $global:prompt_old
Run Code Online (Sandbox Code Playgroud)