2017-01-03 41 views
2

考慮這兩個哈希表Hashtable的輸出列標題

$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 

回答

0

原因爲什麼列標題在myHash2的輸出省略了this post

總結說明:

現在,如果沒有數據類型的已註冊視圖,則Out-Default會查看該流中的第一個對象以確定對象具有5個或更多屬性的多少個屬性,然後將整個流發送到Format-List,否則它發送整個流到格式表。當它將流發送到Format-Table時,該命令需要生成列。 它通過查看FIRST OBJECT的屬性 - 這些成爲列。如果第一個對象具有2個屬性,則即使流中的所有其他對象都有10個屬性,也會得到2列表。

在後,在21:28的1月10日通過安斯加爾-Wiechers提出的意見完成了答案:

什麼是相關不僅列數,而且他們的標題。 $myArray顯示爲具有2列的表格keyval,而$myArray.GetType()將顯示具有4列的表格輸出IsPublic,IsSerial,Name和。由於後面的列沒有標題keyval,因此它們都不顯示。

1

這應該可以幫助您:

$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 
+0

我第二阿比傑斯。這很好。 '$ myHash1 |英尺$ myHash2 |英尺' –

+1

我會建議使用Out-String(如評論中所述)而不是格式表。如果需要,至少可以從外部字符串中獲取一些數據,但格式表輸出不透明。 –

+1

是否有人知道**爲什麼**第二條語句的列標題被忽略? –