powershell - 从模块修改和恢复 PowerShell 提示符

标签 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
}

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

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

最佳答案

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

备份使用:

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

然后您可以修改提示,稍后使用以下命令恢复:
set-content function:\prompt $global:prompt_old

关于powershell - 从模块修改和恢复 PowerShell 提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15231712/

相关文章:

powershell - Powershell .addDays()

java - 如何仅在用户定义的类中定义自定义请求范围

javascript - NodeJS中的 'global'对象是什么

javascript - 对象的属性如何访问其他属性?

windows - 写一个只有 UTF-8 BOM 的空文件

arrays - 在 PowerShell 中从对象中选择某些属性

powershell - 将带有复杂参数的批处理文件命令转换为 PowerShell

Python 模块范围

c++ - 并行实例化类导致与内存相关的错误

PowerShell 和表达式中的空格