将变量传递给Foreach-Object Powershell 7

问题描述

我想要什么:

我有一个脚本,可以将CAB文件复制到一百多台服务器上,并在其上使用它。 该脚本运行了一周以上。 当我了解到Foreach-Object并行功能时,我认为这将大大加快脚本的速度。但是我遇到了一个问题。由于我不是非常了解Powershell,而且我在任何地方都找不到有关此问题的文章,所以我想,我要试试运气,在这里问:

预期和实际结果

我想将变量传递给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.

我在做什么错了?

这可能是一个小问题。但是由于我什么也没找到,也没有找到任何邮政编码示例。我在这里张贴。我很感谢答案。

解决方法

您可以通过使用 using keyword来简化此操作:-)

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...