首页 > 解决方案 > 合并两个对象数组

问题描述

我有两个变量都是 system.array 类型。我想合并它们并在 Out-grid 视图中获取输出。

第一个变量是 $out

回声 $out

number            : CTASK19496
state             : Assigned
User Name         : Ana
CI Name           :
comments          :
work_notes        :
short_description : Implementation Task
opened_at         : 24/11/2020 01:37:40


number            : CTASK000501
state             : Assigned
User Name         : Ranjay 
CI Name           :
comments          :
work_notes        :
short_description : Implementation Task
opened_at         : 24/11/2020 03:50:16


number            : CTASK000169
state             : Assigned
User Name         : Dan
CI Name           :
comments          :
work_notes        :
short_description : configure the full 
opened_at         : 25/11/2020 14:47:1

第二个变量是 $data

回显$数据

end_date
--------
10/11/2020 23:59:59
25/11/2020 23:59:59
26/11/2020 23:59:59

我试过的代码是

$Shortened = $out + $out1 | ForEach-Object {
$_ | Select-Object number, end_date
 }

$缩短 | 格式表-AutoSize

我得到的输出是

 number        end_date
------        --------
CTASK19496
CTASK000501
CTASK000169
              03/12/2020 23:59:59
              04/12/2020 23:59:00
              30/11/2020 21:30:00

输出我想要的如下

 number        end_date
------        --------
CTASK19496    03/12/2020 23:59:59
CTASK000501   04/12/2020 23:59:00
CTASK000169   30/11/2020 21:30:00

标签: arrayspowershelljoinmerge

解决方案


Ass Lee_Daily评论说,假设每个数组中的每一行都是相关的。您可以像这样使用 for 循环

for($i = 0; $i -lt $out.count; $i++)
{
    [PSCustomObject]@{
        number   = $out[$i].number
        end_date = $out1[$i].end_date
    }
}

输出

number      end_date           
------      --------           
CTASK19496  03/12/2020 23:59:59
CTASK000501 04/12/2020 23:59:00
CTASK000169 30/11/2020 21:30:00

只需捕获到一个变量,然后发送到Out-GridView

$output = for($i = 0; $i -lt $out.count; $i++)
{
    [PSCustomObject]@{
        number   = $out[$i].number
        end_date = $out1[$i].end_date
    }
}

$output | Out-GridView

推荐阅读