如何从 Invoke-webrequest 内容结果中钻取数据?

时间:2021-05-11 06:36:15

标签: powershell invoke-webrequest

我设法以字符串的形式返回 invoke-webrequest 的内容,但现在我不知道访问内部的单个值,因为它是字符串值。

这是返回字符串的片段,我省略了部分值

{
  "odata.metadata":"https://wdzbomfg1.com/api/odata/v3/$metadata#report_description","odata.count":"18
80","value":[
    {
      "ActivityInstanceDestinationID":"20","ActivityName":"Task","ActivityInstan
ceID":"18","ProcessInstanceID":"1223","Destination":"a2\\","StartDate
":"2021-05-10T18:47:01","FinishDate":"1900-01-01T00:00:00","Status":"Active","Du
ration":"0","ProcessName":"ReviewSub","ProcessFolder":"Work","Fol
io":"","ExpectedDuration":"0","ActivityID":"","Final_Acti
on":null,"ActivityDisplayName":"Task"
    }
  ],"odata.nextLink":"https://wdzbomfg1.com/api/odata/v3/$metadata#report_description?$filter=StartDate%20ge%20d
atetime'2021-05-10T13:40:08'&$skip=1000"
}

我已经尝试将其转换为 json,但它将所有内容转换为 odata.metadata 中的单个值。我想要的只是能够像数组一样访问它,例如 $var.odata.count 将输出 1880。

1 个答案:

答案 0 :(得分:0)

$Json = @'
{
  "odata.metadata":"https://wdzbomfg1.com/api/odata/v3/$metadata#report_description","odata.count":"18
80","value":[
    {
      "ActivityInstanceDestinationID":"20","ActivityName":"Task","ActivityInstan
ceID":"18","ProcessInstanceID":"1223","Destination":"a2\\","StartDate
":"2021-05-10T18:47:01","FinishDate":"1900-01-01T00:00:00","Status":"Active","Du
ration":"0","ProcessName":"ReviewSub","ProcessFolder":"Work","Fol
io":"","ExpectedDuration":"0","ActivityID":"","Final_Acti
on":null,"ActivityDisplayName":"Task"
    }
  ],"odata.nextLink":"https://wdzbomfg1.com/api/odata/v3/$metadata#report_description?$filter=StartDate%20ge%20d
atetime'2021-05-10T13:40:08'&$skip=1000"
}
'@

$Object = ConvertFrom-Json $Json
$Object.'odata.count'
18
80

ConvertFrom-Json 反序列化 $Json 字符串,其中 'odata.count' 包含请求的值。

请注意,在您的示例中,值 1880 被换行符分割,在不同的行上输出值 1880

相关问题