Foreach 并行缺少参数“xxx”的参数。指定“System.Object”类型的参数并重试

问题描述 投票:0回答:1

我在 powershell 脚本中使用并行 foreach。我在循环内传递外部变量时遇到问题。代码如下

[CmdletBinding()]
param (
    $var1,
    $var2,
    $var3,
    $var4
)


$MyArr | ForEach-Object -Parallel {
 
   
      Invoke-Expression ".\myscript.ps1 -var1 $var1 -var2 $var2 -var3 $var3 -var4 $var4"


}

当我执行它时,我得到:

myscript.ps1: Missing an argument for parameter 'var1'. Specify a parameter of type 'System.Object' and try again.

有办法解决吗?

powershell azure-powershell
1个回答
3
投票

使用

using:
特殊范围修饰符 使 PowerShell 将值复制到底层运行空间:

$MyArr | ForEach-Object -Parallel {
    .\myscript.ps1 -var1 $using:var1 -var2 $using:var2 -var3 $using:var3 -var4 $using:var4
}
© www.soinside.com 2019 - 2024. All rights reserved.