You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将两个PSCustomObject合并并输出为CSV?PowerShell求助

解决方案:合并无匹配键的PSCustomObject并输出CSV

你之前用$result=[pscustomobject]($a+$b)失败的核心原因是:$a + $b会把两个PSCustomObject拼成数组,而非合并它们的属性。转成PSCustomObject时,PowerShell会把数组索引作为新对象的属性名,值则是原来的两个独立对象,因此会出现数据显示异常。

下面是两种可行的合并方法:

方法1:通过哈希表合并属性

先将两个对象的属性键值对合并到一个哈希表,再转换为PSCustomObject:

# 示例对象
$a = [PSCustomObject]@{
    姓名 = "张三"
    年龄 = 28
}
$b = [PSCustomObject]@{
    城市 = "北京"
    职业 = "程序员"
}

# 合并属性
$combinedHash = @{}
$a.PSObject.Properties | ForEach-Object { $combinedHash[$_.Name] = $_.Value }
$b.PSObject.Properties | ForEach-Object { $combinedHash[$_.Name] = $_.Value }
$result = [PSCustomObject]$combinedHash

方法2:用Select-Object动态拼接属性

通过Select-Object一次性包含两个对象的所有属性:

$result = $a | Select-Object *, ($b.PSObject.Properties.Name | ForEach-Object {
    @{Name = $_; Expression = { $b.$_ } }
})

输出到CSV

合并完成后,直接导出为CSV文件:

$result | Export-Csv -Path "合并结果.csv" -NoTypeInformation -Encoding UTF8

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:50:17