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字符串中获取一些数据,但是格式化表输出是不透明的。有人知道为什么第二条语句中省略了列标题吗?