首页 > 解决方案 > 在PowerShell中组合/合并对象的快速方法

问题描述

我有两个对象,每个对象包含 20 多个属性。

第一个来自 Get-ADUser,第二个是使用 Access 数据库中的 SQL 查询构建的。

所以现在我有例如 $object1 , $object2。

我正在通过执行自定义对象来组合这些对象,例如:

    $properties = [ordered]@{
    'a'=$object1.propertyX;
    'b'=$object1.propertyY;
    'c'=$object2.propertyX;
    ...
    }

$CombinedObject = New-Object –TypeName PSObject -Property $properties

这会起作用,但是要花很多时间来输入每个对象总共约 40 个属性。

有没有一种更快的方法可以将两个对象及其所有属性组合到一个自定义对象中,这样可以节省我所有的打字时间?

标签: powershellobjectmerge

解决方案


您可以为每个对象的属性创建一个哈希表,并从中创建一个对象。我建议在每个属性上添加 AD 和 SQL 前缀,以了解它来自哪个对象并避免冲突。

$PropertyHT = @{}
$object1.psobject.properties.name | ForEach-Object{ $PropertyHT.Add("AD$_",$Object1.$_) }
$object2.psobject.properties.name | ForEach-Object{ $PropertyHT.Add("SQL$_",$Object2.$_) }
$CombinedObject = New-Object –TypeName PSObject -Property $PropertyHT

推荐阅读