[英]Append 2 pscustomobjects into 1
看来您要做的是将两个对象的属性合并为一个。
您可以通过内部成员PSObject
访问 object 的属性和属性值,在这种情况下,您需要枚举两个对象( $a
和$b
)的所有属性并将它们一起放入有序字典中,最后将[pscustomobject]
结果得到一个新的合并object。 这个 function 可以为您简化该过程。
function Merge-PSCustomObject {
param(
[Parameter(Mandatory)]
[Object] $LeftObject,
[Parameter(Mandatory)]
[Object] $RigthObject
)
end {
$result = [ordered]@{}
foreach($property in @($LeftObject.PSObject.Properties; $RigthObject.PSObject.Properties)) {
$result[$property.Name] = $property.Value
}
[pscustomobject] $result
}
}
$a = [pscustomobject]@{ foo = 'hello' }
$b = [pscustomobject]@{ bar = 'world'; baz = 123 }
Merge-PSCustomObject -LeftObject $a -RigthObject $b
如果你在两边都有一个对象数组,假设两个 arrays 都有相同的对象数,你可以使用一个for
循环来合并两个 arrays 中的每个 object,例如:
$a = [pscustomobject]@{ foo = 'hello' }
$b = [pscustomobject]@{ bar = 'world'; baz = 123 }
$arr1 = 0..3 | ForEach-Object { $a }
$arr2 = 0..3 | ForEach-Object { $b }
$result = for($i = 0; $i -lt $arr1.Count; $i++) {
Merge-PSCustomObject $arr1[$i] $arr2[$i]
}
查看以下是否有效:
for($i = 0; $i -lt $a.Count; $i++)
{
$a[$i] | Add-Member -NotePropertyName Sample3 -NotePropertyValue $b[$i].Sample3
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.