如果您的哈希表包含嵌套的哈希表,如何将其递归转换为PsObject?
@{
Foo = @{
Bar = @{
Key = 'Value'
Test = 1
}
}
}
结果应为
$_.Foo.Bar.Key = 'Value'
$_.Foo.Bar.Test = 1
答案 0 :(得分:0)
一种方法是创建一个递归函数:
function ConvertTo-PsObject {
param (
[hashtable] $Value
)
foreach ( $key in $Value.Keys | Where-Object { $Value[$_].GetType() -eq @{}.GetType() } ) {
$Value[$key] = ConvertTo-PsObject $Value[$key]
}
New-Object PSObject -Property $Value | Write-Output
}
答案 1 :(得分:0)
将其投射到[PsCustomObject]
:
$a = [PsCustomObject]@{
Foo = @{
Bar = @{
Key = 'Value'
Test = 1
}
}
}
$a.Foo.Bar.Key # --> "Value"
$a.Foo.Bar.Test # --> 1
答案 2 :(得分:0)
目前尚未提及的另一种方法是使用 New-Object PSObject。
$a = @{
Foo = @{
Bar = @{
Key = 'Value'
Test = 1
}
}
}
$b = New-Object -Type PSObject -Property $a
这样做可以使其在 Format-Table
中正常工作,也可能在其他地方也能正常工作。