Powershell通用集合列表不显示多个对象[重复]
Posted
技术标签:
【中文标题】Powershell通用集合列表不显示多个对象[重复]【英文标题】:Powershell generic collections list not displaying multiple object [duplicate] 【发布时间】: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
请指教
【问题讨论】:
【参考方案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 评估并以表格格式包含每个对象的属性
【讨论】:
以上是关于Powershell通用集合列表不显示多个对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在不锁定集合的情况下从通用集合中获取 Count 值是不是安全?