将变量传递给Foreach对象PowerShell 7



我想要什么:

我有一个脚本,它将CAB文件复制到100多个服务器上,并在它们上使用它。这个脚本运行了一个多星期。当我了解到Foreach对象并行特性时,我认为这将大大加快脚本的速度。但我遇到了一个问题。由于我不是很了解PowerShell,而且我在任何地方都没有找到关于这个问题的帖子,我想,我要碰碰运气,在这里问:

预期和实际效果

我想将一个变量传递给foreach对象cmdlet中执行的脚本块,如下所示:

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

我的期望:

1, 123
2, 123
3, 123

我得到的:

ForEach对象:无法使用指定的命名参数解析参数集。发出的一个或多个参数不能一起使用,或者提供的参数数量不足。

我做错了什么?

这可能是一个微不足道的问题。但由于我哪儿也没找到,也找不到任何帖子/代码示例。我把它贴在这里。我感谢你的回答。

您可以通过使用using关键字来简化它:-(

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

最新更新