使用PowerShell在同一输出中获取多个列表

使用PowerShell在同一输出中获取多个列表,powershell,Powershell,我必须在ISE的蓝色部分显示: Column1 Column2 Column3 Column4 ------- ------- ------- ------- infra-98 infra-852 infra-44 infra-99 infra-62 infra-85 infra-8 infra-23 infra-8 infra-852 infra-10 infra-55 infra-70 Colu

我必须在ISE的蓝色部分显示:

Column1 Column2 Column3 Column4 ------- ------- ------- ------- infra-98 infra-852 infra-44 infra-99 infra-62 infra-85 infra-8 infra-23 infra-8 infra-852 infra-10 infra-55 infra-70 Column1 Column2 Column3 Column4 ------- ------- ------- ------- infra-1 infra-85 infra-2 infra-99 infra-98 infra-55 infra-44 infra-23 infra-2 infra-1 infra-10 infra-62 infra-70
构建4个单独的数组,每列一个,然后联接:

$csv = Import-Csv .\1.csv -Delimiter ';'

$ref = [ordered]@{}
$columns = foreach ($i in 0..3) { ,[Collections.ArrayList]@() }

foreach ($row in $csv) {
    $value = $row.Column1
    $ref[$value] = $true
    $columns[0].add($value) >$null
}

foreach ($row in $csv) {
    $i = 1
    foreach ($col in 'Column2', 'Column3', 'Column4') {
        $value = $row.$col
        if (!$ref[$value]) {
            $columns[$i].add($value) >$null
        }
        $i++
    }
}

$maxLine = ($columns | select -expand Count | measure -Maximum).Maximum - 1
$csv = foreach ($i in 0..$maxLine) {
    [PSCustomObject]@{
        Column1 = $columns[0][$i]
        Column2 = $columns[1][$i]
        Column3 = $columns[2][$i]
        Column4 = $columns[3][$i]
    }
}

这是一个通用示例,因此您可能需要对其进行调整。

我只想将输出放在上面,但我当前的代码不是为此编写的,我不知道该怎么做。这两个表必须在同一个输出中。是的,因为我不知道该怎么做才能显示预期的输出。我只是想尽一切办法得到这个结果。我试图在问题中解释它。为了理解charlo希望在每个单独的列中向上移动条目,以便没有更多的空白,我在a中花了很多评论。Sry,即使我阅读了教程,我也无法正确解释我的问题,但口头解释更简单。我有点紧张,因为我必须在两周内完成它。@wOxxOm是的,
*
在结果中被删除了一些单元格无缘无故地消失了。我知道,但这只是个问题。我的目标是由两部分组成。首先移除mtching单元格,然后在同一输出中显示多个表/列表或任何内容,这就是我所要求的。我怎么知道?我不知道错误是什么,你的实际数据是什么,等等。没关系,我发现值有问题,一切正常,谢谢
$csv = Import-Csv .\test1.csv -Delimiter ';'

$ref = @($csv.Column1)
foreach ($row in $csv) {
  foreach ($col in 'Column2', 'Column3', 'Column4') {
    if ($ref -contains $row.$col) { $row.$col = '' }
  }
}


$csv | Select-Object Column1,Column2,Column3,Column4
$csv = Import-Csv .\1.csv -Delimiter ';'

$ref = [ordered]@{}
$columns = foreach ($i in 0..3) { ,[Collections.ArrayList]@() }

foreach ($row in $csv) {
    $value = $row.Column1
    $ref[$value] = $true
    $columns[0].add($value) >$null
}

foreach ($row in $csv) {
    $i = 1
    foreach ($col in 'Column2', 'Column3', 'Column4') {
        $value = $row.$col
        if (!$ref[$value]) {
            $columns[$i].add($value) >$null
        }
        $i++
    }
}

$maxLine = ($columns | select -expand Count | measure -Maximum).Maximum - 1
$csv = foreach ($i in 0..$maxLine) {
    [PSCustomObject]@{
        Column1 = $columns[0][$i]
        Column2 = $columns[1][$i]
        Column3 = $columns[2][$i]
        Column4 = $columns[3][$i]
    }
}