Scripting 用于调用另一个命令的$@的Powershell类似物是什么?

Scripting 用于调用另一个命令的$@的Powershell类似物是什么?,scripting,shell,powershell,Scripting,Shell,Powershell,在unixshell脚本中,要对脚本的原始参数调用commandfoo,只需编写 foo $@ 在Powershell中,$args是(通常)包含当前脚本参数的字符串数组。如果你写信 foo $args 在bash或其他典型的unixshell脚本解释器中会发生同样的情况吗?您希望使用参数飞溅,这是PowerShell 2.0中的新功能。用于splatting的变量可以是数组(参数按位置绑定)或哈希表(键映射到参数名,它们的值提供参数)。如果未声明任何参数,请使用@args。尝试使用$arg

在unixshell脚本中,要对脚本的原始参数调用command
foo
,只需编写

foo $@
在Powershell中,
$args
是(通常)包含当前脚本参数的字符串数组。如果你写信

foo $args

在bash或其他典型的unixshell脚本解释器中会发生同样的情况吗?

您希望使用参数飞溅,这是PowerShell 2.0中的新功能。用于splatting的变量可以是数组(参数按位置绑定)或哈希表(键映射到参数名,它们的值提供参数)。如果未声明任何参数,请使用
@args
。尝试使用
$args
的问题是,它将作为数组发送到第一个参数,而不是分散到所有参数。然而,许多人确实声明了参数。在这种情况下,您希望使用@PSBoundParameters,例如:

foo @PSBoundParameters

请注意,这与传递所有参数并不完全相同。开关将显示为布尔参数。对于所有“绑定”参数,它实际上是相同的。也就是说,PowerShell将把bool应用于下游开关参数,这样您就不会意识到它通过了bool。此外,[switch]只是一个位于bool之上的解析构造。现在,
@PSBoundParameters
没有得到任何未绑定的参数。