Powershell 添加行到 table 导致两个 tables

Powershell adding row to table results in two tables

我在尝试向 table 添加行时遇到了一点问题。我将原始值存储在一个变量中,并使用自定义对象将它们转换为 table 格式。

$table = @( @{ColumnA="Able";    ColumnB=1; ColumnC=4},
            @{ColumnA="Baker";   ColumnB=2; ColumnC=3},
            @{ColumnA="Charlie"; ColumnB=3; ColumnC=5} )

$t2 = $table | ForEach {[PSCustomObject]$_} | Format-Table -AutoSize

之后,我将一个新对象存储在一个变量中并将其附加到 table 变量。

$newRow = New-Object PsObject -Property @{ ColumnA = "James" ; ColumnB = 4 ; ColumnC = 12 }
$t2 += $newRow

$t2

我的期望是得到以下结果:

ColumnC ColumnB ColumnA
------- ------- -------
      4       1 Able   
      3       2 Baker  
      5       3 Charlie
      12      4 James

但是我收到的是这样的:

ColumnC ColumnB ColumnA
------- ------- -------
      4       1 Able   
      3       2 Baker  
      5       3 Charlie


ColumnC ColumnB ColumnA
------- ------- -------
     12       4 James  

如何将所有行合并为一个table?

谢谢,丹尼尔

你有一个哈希表数组。您需要附加另一个哈希表:

$table += @{ ColumnA = "James" ; ColumnB = 4 ; ColumnC = 12 }

$table

Name                           Value
----                           -----
ColumnA                        Able
ColumnC                        4
ColumnB                        1
ColumnA                        Baker
ColumnC                        3
ColumnB                        2
ColumnA                        Charlie
ColumnC                        5
ColumnB                        3
ColumnA                        James
ColumnC                        12
ColumnB                        4

没有理由使用 Format-Table,除了更改显示。

如果您想使用 属性 名称作为 header 名称来显示它们,您可以执行以下操作:

$table | %{ New-Object PSCustomObject -Property @{ ColumnA=$_.ColumnA; ColumnB=$_.ColumnB; ColumnC=$_.ColumnC } } | Select-Object -Property ColumnA, ColumnB, ColumnC

这将像这样显示它们:

ColumnA ColumnB ColumnC
------- ------- -------
Able          1       4
Baker         2       3
Charlie       3       5
James         4      12