Multithreading Powershell线程问题:代码执行两次?

Multithreading Powershell线程问题:代码执行两次?,multithreading,powershell,Multithreading,Powershell,我有线程的问题,希望有人能为我澄清这一点。我的线程返回数组中的重复项。我一直在兜圈子,试图找出原因。代码如下: $arrayofinfo | Start-RSJob -Name {"Command_$($_)"} -throttle 10 -ScriptBlock { $command = $_ $array_1 = @() $array_1 = Invoke-Expression " & $command" -EA SilentlyCont

我有线程的问题,希望有人能为我澄清这一点。我的线程返回数组中的重复项。我一直在兜圈子,试图找出原因。代码如下:

$arrayofinfo | Start-RSJob -Name {"Command_$($_)"} -throttle 10   -ScriptBlock {     

     $command = $_
     $array_1 = @()
     $array_1 = Invoke-Expression " & $command" -EA SilentlyContinue
     if(($array_1.count) -gt 20)
     {  
        $array_1 += $command
        $array_1 += $array_1
        return $array_1
     }
} ## end of scriptblock
get-rsjob | wait-rsjob #-Timeout 7
$array_complete = get-rsjob -HasMoreData -ErrorAction SilentlyContinue |  Receive-RSJob -ErrorAction SilentlyContinue | Select-Object -ErrorAction SilentlyContinue

所发生的情况是,$命令被执行两次,或者结果被放入$array_1中两次。不知怎的$数组_complete的大小是原来的两倍,并且每个条目都包含重复的条目。怎样??????任何其他看起来可以改进的地方,请评论。谢谢。

$array\u 1+=$array\u 1
这行不是数组的两倍吗?是的,但是它会添加一个新条目,由invoke expression命令生成。它不应该添加第二个副本。我想大概是这样。我发现的例子显示了这样的添加。如果这是不正确的,这就是问题所在,如何解决这个问题?我真的不知道。嗯。。我认为佩瑟拉尔是对的。将返回数组更改为$temp并运行看起来已经修复了该问题。谢谢你的大开眼界。
$array\u 1+=$array\u 1
这行不是数组的两倍吗?是的,但是它会添加一个新条目,由invoke expression命令生成。它不应该添加第二个副本。我想大概是这样。我发现的例子显示了这样的添加。如果这是不正确的,这就是问题所在,如何解决这个问题?我真的不知道。嗯。。我认为佩瑟拉尔是对的。将返回数组更改为$temp并运行看起来已经修复了该问题。谢谢你让我大开眼界。