Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量传递给Foreach对象Powershell 7 我想要的是:_Powershell_Powershell 7.0_Foreach Object - Fatal编程技术网

将变量传递给Foreach对象Powershell 7 我想要的是:

将变量传递给Foreach对象Powershell 7 我想要的是:,powershell,powershell-7.0,foreach-object,Powershell,Powershell 7.0,Foreach Object,我有一个脚本,它将CAB文件复制到100多台服务器上,并在这些服务器上使用它。 这个脚本运行了一个多星期。 当我了解到Foreach对象并行特性时,我认为这将大大加快脚本的速度。但我遇到了一个问题。由于我对powershell了解不多,而且我在任何地方都没有找到关于这个问题的帖子,我想,我可以试试运气,在这里问一下: 预期和实际结果 我想在foreach object cmdlet中将变量传递给已执行的scriptblock,如下所示: $test = "123" 1..3|

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

预期和实际结果 我想在foreach object cmdlet中将变量传递给已执行的scriptblock,如下所示:

$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/代码示例。我把它贴在这里。我很感谢您的回答。

您可以使用:-)来简化这一点


如果脚本运行时间超过一周,我认为您需要对架构进行重大重写。并行处理可能是一种方法,但可能还有其他更聪明的方法。我想你需要对这个过程进行彻底的返工。一种方法是将copy命令放到远程系统&让它们执行复制。您当前的大纲给人的印象是,您正在从源代码复制到运行代码的系统,最后复制到目标代码。一个更快的方法是从源到目标,并在目标端控制它。@Lee_Dailey这正是我要做的。我得到了你提到的脚本:foreach服务器复制cab文件,做一些事情。我现在这样做:服务器| foreach对象-并行{invoke command to server(copy cab file,do stuff)}。为了确保可读性,我想在foreach对象之外定义变量和函数,并传递它们。在那里我遇到了我的问题。啊!在你的问题中我看不到。。。但看起来MartinBrandl已经指出了问题所在&解决方法。杰出的[咧嘴笑]我想知道为什么我在搜索结果的M$help页面上找不到这样的东西。非常感谢。
$test = "123"
1..3 | foreach-object -parallel { echo "$_, $($using:test)" }