组合链接的对象数组

时间:2013-04-17 18:44:33

标签: powershell powershell-v2.0

我有3个对象数组。它们看起来像这样:

  • $arr1$arr2:具有(IDfilenamesize等属性的对象。
  • $arrlink:具有(file1IDfile2ID,misc等属性的对象。这链接了上述两个对象

我需要做的是将它们组合成一个数组,以便将其写入CSV。需要将3与File1IDFile2ID链接到其他2个数组中的ID列。我需要能够选择我想要的属性。这是一个例子

$arr1[0] = {1,"c:\filename1.txt",1000....}
$arr1[1] = {2,"c:\filename2.txt",2000....}

$arrlink[0] = {1,2,"aaaa")

期望的结果:

newarray[0] = {"c:\filename1.txt", "c:\filename2.txt", "aaaa"}

我知道我可以通过这样做,但是想知道是否有更简单/更直接的方式。

当然,每个数组中都有很多项,但它们都以1对1的关系链接。

1 个答案:

答案 0 :(得分:1)

我用这个结束了。它可以节省大量的输入,如果我修改底层对象则不需要修改(只要我单独留下链接的字段)。

$arrOutput = @()

foreach($a in $arrMatch)
    {
    $objOut = New-Object PsObject

    $a.psobject.properties | % { $objOut | Add-Member -MemberType $_.MemberType -Name $_.Name -Value $_.Value}
    $arrS1[$a.file1].psobject.properties | % { $objOut | Add-Member -MemberType $_.MemberType -Name ($_.Name + "_1")  -Value $_.Value}
    $arrS2[$a.file2].psobject.properties | % { $objOut | Add-Member -MemberType $_.MemberType -Name ($_.Name + "_2") -Value $_.Value}
    $arrOutput+= $objOut
    }