在powershell工作流中并行创建对象并将其添加到数组中

时间:2015-06-24 08:20:31

标签: powershell powershell-v4.0 powershell-workflow

我需要在工作流内并行创建许多对象,并将所有对象添加到数组中。我的代码就是这样的

workflow sample {
    $ans=@()
    $arr=@(1,2,3)

    foreach -parallel ($a in $arr){
       $obj= New-Object System.Object
       $obj | Add-Member -type NoteProperty -Name "Number" -Value $a
       $workflow:ans += $obj
    }
    $ans
}

但是这个的输出是

PSComputerName                                PSSourceJobInstanceId                                                            
--------------                                ---------------------                                                            
localhost                                     56295d88-4599-495a-ae64-00d129f7e21c                                             
localhost                                     56295d88-4599-495a-ae64-00d129f7e21c                                             
localhost                                     56295d88-4599-495a-ae64-00d129f7e21c   

我想要一个包含三个对象的数组。如何在这种情况下实现这一目标

1 个答案:

答案 0 :(得分:4)

尝试这种方式:

workflow sample {        
    $ans=@()
    $arr=@(1,2,3)    

    foreach -parallel ($a in $arr){
       $obj= New-Object -type PSObject -Property  @{ 
       Number = $a 
       }
       $workflow:ans += $obj
    }

    $ans     
}

sample | select -Property Number
由于对象序列化/反序列化,

Add-memberworkflow中的效果不佳。