要完成与 Unix 语法等效的操作,您不仅需要设置环境变量,还必须在执行命令后将其重置为之前的值。我通过将类似于以下的函数添加到我的 PowerShell 配置文件中来完成我使用的常用命令。
function cmd_special()
{
$orig_master = $env:app_master
$env:app_master = 'http://host.example.com'
mycmd $args
$env:app_master = $orig_master
}
mycmd
根据环境变量的值,一些运行方式不同的可执行文件也是如此app_master
。通过定义cmd_special
,我现在可以cmd_special
使用环境变量设置从命令行(包括其他参数)执行app_master
...并在执行命令后重置(甚至取消设置)。
据推测,您也可以针对单个调用执行此临时操作。
& { $orig_master = $env:appmaster; $env:app_master = 'http://host.example.com'; mycmd $args; $env:app_master = $orig_master }
它确实应该比这更容易,但显然这不是 PowerShell 很容易支持的用例。也许未来的版本(或第三方功能)会促进这个用例。如果 PowerShell 有一个可以执行此操作的 cmdlet,那就太好了,例如:
with-env app_master='http://host.example.com' mycmd
也许 PowerShell 专家可以建议如何编写这样的 cmdlet。