我无法从哈希表JSON对象中提取键值
$personnelresult = Invoke-RestMethod -Method Get www.url.com -WebSession $currentsession
# Create Table Format
$personnelresult = @{expression={$_.id};Label="ID";Width=37},
@{expression={$_.name};Label="Name";Width=32},
@{expression={$_.Atributes};Label="Attributes";Width=128}
# Print Results
Write-Host "----------------" -ForegroundColor Green
Write-Host "Personnel report" -ForegroundColor Green
Write-Host "----------------" -ForegroundColor Green
$personnelresult.details |
Format-Table $personnelresult
Write-Host "----------------------" -ForegroundColor Yellow
Write-Host "Count is limited to 15" -ForegroundColor Yellow
Write-Host "----------------------" -ForegroundColor Yellow
# End Results
我得到这个:
ID Name Atrributes
---- ---- ----------
245 Joe @{age=23; weight=200; height=73}
423 Brendan @{age=25; weight=173; height=45}
213 Ashley @{age=28; weight=350; height=20}
我想要的是这个或类似的东西
ID Name Attributes
---- ---- ----------
245 Joe age=23 weight=200 height=73
423 Brendan age=25 weight=173 height=45
213 Ashley age=28 weight=350 height=20
我尝试过的
我把这个放在桌前
$personnelresult.details.Attributes = $personnelresult.details.Attributes |
ForEach-Object {
Foreach($p in psobject.properties)
{
$p.Name
}
}
而且,我会得到
ID Name Atrributes
---- ---- ----------
245 Joe {System.Int32 age=23, System.Int32 weight=200, System.Int32 height=73}
423 Brendan {System.Int32 age=25, System.Int32 weight=173, System.Int32 height=45}
213 Ashley {System.Int32 age=28, System.Int32 weight=350, System.Int32 height=20}
如果在处理此数据方面有更好的做法或建议,请告诉我。另外,我处理的字符串比原始脚本中的字符串长得多。想法是在控制台中的单个ID上显示所有这些信息。
最佳答案
好吧,如果您的想法是将所有内容都放在一个ID中,则可以执行以下操作:
$personnelresult = @{e={$_.id};l="ID";Width=37},
@{e={$_.name};l="Name";Width=32},
@{e={$_.Atributes.age};l="Age";Width=32},
@{e={$_.Atributes.weight};l="Weight";Width=32},
@{e={$_.Atributes.height};l="Height";Width=32}
这样仍然可以使所有内容保持一致,并为您提供了更好的方法来稍后在管道中处理数据。
关于powershell - 从pscustomobject的单列格式化哈希表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41305798/