从表面上看,这些结构在PowerShell中看起来很相似:
{}
脚本阻止 - 来自 about_Script_Blocks :
在Windows PowerShell编程语言中,脚本块是可以用作单个单元的语句或表达式的集合。脚本块可以接受参数并返回值
$()
Subexpression运算符 - 来自 about_Operators :
返回一个或多个语句的结果。对于单个结果,返回标量。对于多个结果,返回一个数组。
在下面的(设计)插图中,子表达式和调用的脚本块执行相同的功能,但我确定一个更复杂的示例可以突出显示使用其中一个的需要。在哪些情况下我们可以选择使用一个而不是另一个?选择如何影响范围和执行性能?
$foo = $(Invoke-Bar; Invoke-Baz)
$foo = &{Invoke-Bar; Invoke-Baz}
我是否理解这些表达式在同一个PowerShell进程中执行(与fork
类似命令替换 $()
的子shell进程的许多* nix shell不同?
是否有办法 - 甚至是在子shell /子进程中运行脚本的一部分的原因?