从两个对象构造自定义对象

时间:2019-06-20 13:01:03

标签: powershell custom-object

我有两个对象:

PropID     ValueX
---------- ------------
      8039 xxxx
      8041 xxxx
      8042 xxxx
PropID     ValueY
---------- -------
      8039 yyyy
      8041 yyyy
      8042 yyyy

我想最终得到一个包含PropName,ValueX,ValueY(基于PropID)的新对象,如下所示:

PropID     ValueX       ValueY
---------- ------------ ----------
      8039 xxxx         yyyy
      8041 xxxx         yyyy
      8042 xxxx         yyyy

我知道这很简单,但是我对此感到生锈,可以伸出援助之手。

*与In Powershell, what's the best way to join two tables into one?不同,因为我不想使用任何第三方cmdlet,而只希望使用本机PowerShell。

1 个答案:

答案 0 :(得分:2)

这只是一个使用$o1作为包含ValueX的对象数组和$o2作为包含ValueY的对象数组的示例。也许这会使您朝着理想的方向开始。

$o1 = @( [pscustomobject]@{
    propID = 1
    ValueX = 334
    }) -as [collections.generic.list[object]]
$o1.add([pscustomobject]@{
    propID = 3
    ValueX = 34324
    })
$o1.add([pscustomobject]@{
    propID = 2
    ValueX = 534
    })

$o2 = @( [pscustomobject]@{
    propID = 1
    ValueY = 867
    }) -as [collections.generic.list[object]]
$o2.add([pscustomobject]@{
    propID = 2
    ValueY = 873
    })
$o2.add([pscustomobject]@{
    propID = 3
    ValueY = 89722
    })

$newobject = $o1 | Foreach-Object { 
            $_.psobject.copy()
           }
$newobject |
    Foreach-Object {
        $obj = $_
        $_ | Add-Member -MemberType NoteProperty -Name ValueY -Value $o2.where{$_.propid -eq $obj.propid}.ValueY
    }