3

我正在编写一个用于与远程服务交互的 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
}

但是,Copy-Item不会在全局范围内复制。因此,prompt抛出 aCommandNotFoundException并且断开功能不能替换promptprompt_old.

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

4

1 回答 1

8

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

备份使用:

$global:prompt_old = get-content function:\prompt

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

set-content function:\prompt $global:prompt_old
于 2013-03-05T21:53:58.270 回答