首页 > 解决方案 > 在powershell中从json获取节点值

问题描述

我在 powershell 变量中有 json 主体,并希望从中获取价值。

json身体:

"value":  [
                  {
                      "id":  1,
                      "scope":  "3e93f9e6-f427-48e1-b37b-994d196e1121",
                      "name":  "Default",
                      "isHosted":  false,
                      "poolType":  "automation",
                      "size":  3
                  },
                  {
                      "id":  2,
                      "scope":  "3e93f9e6-f427-48e1-b37b-994d196e1121",
                      "name":  "Hosted",
                      "isHosted":  true,
                      "poolType":  "automation",
                      "size":  10
                  },
                  {
                      "id":  4,
                      "scope":  "3e93f9e6-f427-48e1-b37b-994d196e1121",
                      "name":  "Hosted VS2017",
                      "isHosted":  true,
                      "poolType":  "automation",
                      "size":  10
                  }]

我想获取 name=Hosted VS2017 即 4 的 id 值

电源外壳 :

Write-Host "json body:" $projects
$id = $projects.value | where { $_.name -eq "Hosted VS2017" }
Write-Host "id :" $id

标签: jsonpowershell

解决方案


您需要先将 JSON 转换为 powershell 对象,然后才能使用它:

$projects = $projects | ConvertFrom-Json

然后你可以访问它的成员:

#requires -Version 3

$projects.value | ? name -eq 'Hosted VS2017'

推荐阅读