如何使用PowerShell将两个PSCustomObject表格合并为一个?
PowerShell合并两个表格对象为单个集合
你的问题出在初始变量赋值时覆盖了数组类型:你一开始把$CarList1和$CarList2定义为空数组,但之后直接将单个[PSCustomObject]赋值给它们,导致变量从数组变成了单个对象实例,这时候用+=无法实现对象的添加。
正确解决方法
方法1:确保初始变量为数组,再添加对象
先将$CarList1初始化为包含第一个对象的数组,再用+=添加第二个对象:
# 初始化为包含第一个对象的数组 $CarList1 = @( [PSCustomObject]@{ "Brand" = "Audi"; "Model" = "A8"; "Color" = "Red"; "ManufactureDate" = "2000.11.01" } ) $CarList2 = [PSCustomObject]@{ "Brand" = "Audi"; "Model" = "A4"; "Color" = "Green"; "ManufactureDate" = "1998.11.01" } # 将第二个对象添加到数组中 $CarList1 += $CarList2 # 输出结果 $CarList1
方法2:直接合并两个对象为新数组
如果不需要修改原变量,直接用数组语法包裹两个对象生成集合:
$CarList1 = [PSCustomObject]@{ "Brand" = "Audi"; "Model" = "A8"; "Color" = "Red"; "ManufactureDate" = "2000.11.01" } $CarList2 = [PSCustomObject]@{ "Brand" = "Audi"; "Model" = "A4"; "Color" = "Green"; "ManufactureDate" = "1998.11.01" } # 合并为新数组 $combinedCarList = @($CarList1, $CarList2) # 输出结果 $combinedCarList
为什么你的原有方法失效
+=操作失败:当$CarList1是单个对象而非数组时,+=会被解析为尝试给对象的属性追加值,而非添加整个对象到集合中,这不符合你的需求。- foreach循环方法错误:你尝试遍历对象的属性并追加值,但每个属性都是单个字符串/日期值,不是数组,内层循环不会执行;且这种方式是修改单个对象的属性,无法生成多行表格的结构。
内容的提问来源于stack exchange,提问作者uragus
相关产品推荐
相关产品推荐

