由Invoke-RestMethod或ConvertFrom-Json返回的格式[pscustomobject]实例

Ale*_*nno 5 powershell formatting json output-formatting

我正在尝试从我从RESTful API接收的JSON文件创建一个表.

当我打印json对象的属性时,我得到一个这样的输出:

PS> Write-Output JSON.Object

Object1           : @{key1=property; key2=property; key3=property; key4=property}
Object2           : @{key1=property; key2=property; key3=property; key4=property}
Object3           : @{key1=property; key2=property; key3=property; key4=property}
Object4           : @{key1=property; key2=property; key3=property; key4=property}

我希望看到的输出是这样的:

Name              key1        key2        key3        key4
-----             ----        ----        ----        ----
Object1           property    property    property    property
Object2           property    property    property    property
Object3           property    property    property    property

另外,是否可以避免显示特定键及其属性?

例:

Name              key1        key2        key4      # ← Not displaying key3
-----             ----        ----        ----
Object1           property    property    property
Object2           property    property    property
Object3           property    property    property

Ans*_*ers 4

您需要将父键名作为属性添加Name到嵌套对象:

$json.Object | ForEach-Object {
  foreach ($p in $_.PSObject.Properties) {
    $p.Value | Select-Object @{n='Name';e={$p.Name}},*
  }
}
Run Code Online (Sandbox Code Playgroud)

请注意,PowerShell 默认情况下将以列表形式呈现输出,因为您的对象具有超过 4 个属性。通过管道传输Format-List -AutoSize以获得表格输出。