Powershell 通用集合列表不显示多个对象

Powershell generic collections list not displaying multiple object

我有两个集合和对象。当显示两个集合时,它只显示一个。请指教

Function Test{
 $Table1 = New-Object 'System.Collections.Generic.List[System.Object]'

 $Table2 = New-Object 'System.Collections.Generic.List[System.Object]'

 $obj = [PSCustomObject]@{
'Name'    = 'Jack'
'Age' = '21'
 }
 $Table1.Add($obj)

  $obj2 = [PSCustomObject]@{
'Name'    = 'Jack'
'city' = 'BKG'
 }
 $Table2.Add($obj2)

 $Table1
 $Table2

 }
 Test
output is:
Name Age
---- ---
Jack 21 
Jack    

我想要如下输出

Name Age
---- ---
Jack 21 

Name city
---- ----
Jack BKG 

请指教

当您将数组或函数中的多个对象发送到控制台时,它会确定在table 中显示的第一个对象的属性。通常,从函数或数组接收到的对象是具有相似属性的相似对象,因此这是可行的。

在您的情况下,您发送了 2 个具有不同属性的对象,因此您得到了这种不需要的行为,即只看到第一个对象的属性。这并不意味着城市 属性 在第二个对象上不存在或第二个对象的年龄为 属性.

如果您想包含第二个对象的属性,您必须强制显示它们

test | Format-Table *, city

test | Format-Table name, age, city

在这种情况下,您会看到以下内容

Name Age city
---- --- ----
Jack 21
Jack     BKG

不完全是您要找的东西,但您现在至少可以看到这座城市 属性。您也可以在不指定 属性 名称的情况下使用 Format-List,因为在这种格式下,每个对象都可以单独列出它们的每个实际属性。

test | Format-List                 

Name : Jack
Age  : 21

Name : Jack
city : BKG

如果您希望两个对象都在 table 视图中,但像上面显示的那样分开 table,您可以使用 foreach 循环并将每个单独发送到 Format-Table 或 Out-主持人如此

Test | ForEach-Object { $_ | Out-Host }

Name Age
---- ---
Jack 21


Name city
---- ----
Jack BKG

每个对象都是单独发送的,允许 Out-Host 以 table 格式评估和包含每个对象的属性