将变量传递给 Foreach-Object PowerShell 7

Pass variables to Foreach-Object PowerShell 7

我想要的:

我有一个脚本,可以将 CAB 文件复制到一百多个服务器上,并在这些服务器上使用它。 这个脚本运行了一个多星期。 当我了解 Foreach-Object -parallel 功能时,我认为这会大大加快脚本的速度。但是我运行陷入了一个问题。由于我对 PowerShell 不是很了解,而且我在任何地方都没有找到关于这个问题的 post,所以我想,我要试试运气并在这里问一下:

预期和实际结果

我想将变量传递给 foreach-object cmdlet 中执行的脚本块,如下所示:

$test = "123"
1..3|foreach-object -parallel {param($test);echo "$_, $test"} -ArgumentList($test)

我的期望:

1, 123
2, 123
3, 123

我得到的:

ForEach-Object: Parameter set cannot be resolved using the specified named parameters. One or more parameters issued cannot be used together or an insufficient number of parameters were provided.

我做错了什么?

这可能是个小问题。但是因为我没有到达任何地方,也没有找到任何 post/code 示例。我post就在这里。感谢您的回答。

您可以通过 使用 using keyword :-)

来简化
$test = "123"
1..3 | foreach-object -parallel { echo "$_, $($using:test)" }