Powershell 哈希表输出列标题
考虑这两个哈希表Powershell 哈希表输出列标题,powershell,Powershell,考虑这两个哈希表 $myHash1 = @{one=1;two=2;three=3;four=4;five=5} $myHash2 = @{six=6;seven=7;eight=8;nine=9;ten=10} 如您所见,当它们显示在屏幕上时,每个都会得到一个列标题 PS C:\> $myHash1 Name Value ---- ----- four 4 five 5 one 1 three
$myHash1 = @{one=1;two=2;three=3;four=4;five=5}
$myHash2 = @{six=6;seven=7;eight=8;nine=9;ten=10}
如您所见,当它们显示在屏幕上时,每个都会得到一个列标题
PS C:\> $myHash1
Name Value
---- -----
four 4
five 5
one 1
three 3
two 2
PS C:\> $myHash2
Name Value
---- -----
six 6
nine 9
seven 7
ten 10
eight 8
但是,当我在1命令中输出它们时,列标题只显示一次
PS C:\> $myHash1;$myHash2
Name Value
---- -----
four 4
five 5
one 1
three 3
two 2
six 6
nine 9
seven 7
ten 10
eight 8
即使添加分隔行,列标题仍然只显示一次
PS C:\> $myHash1;Write-Output 'separator line';$myHash2
Name Value
---- -----
four 4
five 5
one 1
three 3
two 2
separator line
six 6
nine 9
seven 7
ten 10
eight 8
为什么会这样?有没有办法让列标题再次显示在myHash2的输出上?
像这样的
Name Value
---- -----
four 4
five 5
one 1
three 3
two 2
separator line
Name Value
---- -----
six 6
nine 9
seven 7
ten 10
eight 8
这将有助于您:
$myHash1 = @{one=1;two=2;three=3;four=4;five=5}
$myHash2 = @{six=6;seven=7;eight=8;nine=9;ten=10}
#you can also use $myHash1 | Out-String also
$myHash1 | ft
Write-Output "separator"
$myHash2 | ft
myHash2输出中省略列标题的原因解释如下 总结: 现在,如果没有数据类型的注册视图,那么Out Default将查看流中的第一个对象,以确定该对象具有5个或更多属性的属性数,它将整个流发送到Format List,否则将整个流发送到Format Table。当它将流发送到Format表时,该命令需要生成列它通过查看第一个对象的属性来实现这一点,这些属性将成为列。如果第一个对象有两个属性,则即使流中的所有其他对象都有10个属性,也会得到一个2列的表。 Ansgar Wiechers在1月10日21:28发表的评论完成了答案: 相关的不仅仅是栏目的数量,还有它们的标题
$myArray
显示为一个带有2列键和val
的表格,而$myArray.GetType()
将显示具有4列IsPublic
、IsSerial
、名称和基本类型的表格输出。由于后面的列都没有标题键
或val
,因此它们都不显示
我支持阿比吉特。这很有效<代码>$myHash1 | Ft$myHash2 | ft
我建议使用Out字符串(如注释中所述)而不是format表。如果需要,您至少可以从out字符串中获取一些数据,但是格式化表输出是不透明的。有人知道为什么第二条语句中省略了列标题吗?