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

Construct custom object from two objects

我有两个对象:

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。

这只是一个示例,使用 $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
    }