格式化嵌套哈希表
Format a nested hashtable
给定一个包含异构数据的哈希表,例如:
$items = @{
a = @{a1 = "A1"; a2 = "A2"; a3 = "A3" }
b = 1234
c = @{c1 = "C1"; c2 = "C2"; c3 = "C3" }
d = [DateTime]::Now
}
当我尝试使用以下内容显示内容时:
$items | Format-Table -AutoSize
输出为:
Name Value
---- -----
c {c3, c1, c2}
d 05/23/15 11:37:56
b 1234
a {a2, a3, a1}
但是我怎样才能扩展嵌套哈希表的内容,以便我可以看到键值对,例如:
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}
嵌套键值对的具体显示格式不是很关键,我只是想看看。
您需要自己扩展嵌套哈希表:
$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
}
}}
它不是很漂亮,但是 ConvertTo-Xml -As String
可以显示任意深度的嵌套数据结构:
$items | ConvertTo-Xml -As String
受到donothingsuccessfully的启发,怎么样
$items | ConvertTo-Json
看起来更具可读性(对我而言)
给定一个包含异构数据的哈希表,例如:
$items = @{
a = @{a1 = "A1"; a2 = "A2"; a3 = "A3" }
b = 1234
c = @{c1 = "C1"; c2 = "C2"; c3 = "C3" }
d = [DateTime]::Now
}
当我尝试使用以下内容显示内容时:
$items | Format-Table -AutoSize
输出为:
Name Value
---- -----
c {c3, c1, c2}
d 05/23/15 11:37:56
b 1234
a {a2, a3, a1}
但是我怎样才能扩展嵌套哈希表的内容,以便我可以看到键值对,例如:
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}
嵌套键值对的具体显示格式不是很关键,我只是想看看。
您需要自己扩展嵌套哈希表:
$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
}
}}
它不是很漂亮,但是 ConvertTo-Xml -As String
可以显示任意深度的嵌套数据结构:
$items | ConvertTo-Xml -As String
受到donothingsuccessfully的启发,怎么样
$items | ConvertTo-Json
看起来更具可读性(对我而言)