【问题标题】:Powershell generic collections list not displaying multiple object [duplicate]Powershell通用集合列表不显示多个对象[重复]
【发布时间】:2021-02-18 05:19:09
【问题描述】:

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

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 

请指教

【问题讨论】:

    标签: powershell generic-list


    【解决方案1】:

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

    在您的情况下,您发送了 2 个具有不同属性的对象,因此您得到了这种只看到第一个对象的属性的不良行为。这并不意味着第二个对象上不存在 city 属性或第二个对象具有 age 属性。

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

    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
    

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

    Test | ForEach-Object { $_ | Out-Host }
    
    Name Age
    ---- ---
    Jack 21
    
    
    Name city
    ---- ----
    Jack BKG
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-24
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多