2015-05-23 17 views
5

Biorąc hashtable że zawiera heterogenicznych danych, takich jak:Format zagnieżdżony hashtable

$items = @{ 
    a = @{a1 = "A1"; a2 = "A2"; a3 = "A3" } 
    b = 1234 
    c = @{c1 = "C1"; c2 = "C2"; c3 = "C3" } 
    d = [DateTime]::Now 
} 

Gdy próbuję wyświetlić zawartość przy użyciu następujących:

$items | Format-Table -AutoSize 

Wyjście jest:

Name Value 
---- ----- 
c {c3, c1, c2} 
d 05/23/15 11:37:56 
b 1234 
a {a2, a3, a1} 

Ale jak mogę rozwinąć zawartość zagnieżdżonych tablic asocjacyjnych, aby można było zobaczyć pary klucz-wartość, takie jak:

Name Value 
---- ----- 
c {c3=C3, c1=C1, c2=C2} 
d 05/23/15 11:37:56 
b 1234 
a {a2=A2, a3=A3, a1=A1} 

Dokładny format wyświetlania zagnieżdżonych par klucz-wartość nie jest super krytyczny, chcę je tylko zobaczyć.

Odpowiedz

4

Trzeba poszerzyć zagnieżdżone hashtables siebie:

$items | Format-Table Name, @{n='Value';e={ 
    if ($_.Value -is [Hashtable]) { 
    $ht = $_.Value 
    $a = $ht.keys | sort | % { '{0}={1}' -f $_, $ht[$_] } 
    '{{{0}}}' -f ($a -join ', ') 
    } else { 
    $_.Value 
    } 
}} 
0

To nie jest ładne, ale ConvertTo-Xml -As String może wyświetlać zagnieżdżonych struktur danych na dowolną głębokość:

$items | ConvertTo-Xml -As String