Powershell 是否具有与 bash 子外壳等效的功能?

Does Powershell have an equivalent to the bash subshell?

在 linux bash shell 中真正伟大的一件事是您可以在 subshell 内部定义变量,然后在 subshell如果您在不导出它们的情况下定义它们并且在 subshell.

中定义它们,则完成其中定义的(环境?)变量刚刚消失

例如:

$ (set bob=4)
$ echo $bob
$

不存在变量,所以没有输出。

我最近也在编写一些 powershell 脚本并注意到我一直不得不在脚本末尾清空我的变量/对象;使用等价于 powershell 的 subshell 可以解决这个问题。

我以前从未听说过这样的功能,但是您可以通过 运行 如下所示获得相同的效果:

Clear-Host
$x = 3
& {
    $a = 5
    "inner a = $a"
    "inner x = $x"
    $x++
    "inner x increment = $x"
}
"outer a = $a"
"outer x = $x"

输出:

inner a = 5
inner x = 3
inner x increment = 4
outer a = 
outer x = 3

即这使用调用运算符 (&) 到 运行 脚本块 ({...}).