0

我有一个从 Invoke-RestMethod 的 JSON 输出创建的 psobject。我的意图是更改一个值,转换回 JSON,然后使用另一个 Invoke-RestMethod 添加回应用程序 REST API。过去我曾多次使用相同的 REST API 完成此操作,因此我不确定为什么此 API 不起作用。

psobject$restOut看起来像这样:

id: 123
limit: @{limitMb=0; limitPercent=0}

如果我想要的新 id 尚未设置,则下一个代码块会更改 id

$newId = 456
if($restOut.id -ne $newId){
   $restOut.id = $newId
   $inputJson = $restOut | ConvertTo-Json -Depth 2
   Invoke-RestMethod -Uri $restURl -Method PUT -Body $inputJson
}

我期待$inputJson看起来像这样(并且 psobject$restOut确实符合预期):

{
   "id": "456",
   "limit": {
               "limitMb": 0,
               "limitPercent": 0
            }
}

但我实际上得到的是:

{
   "id":  {
             "value": "456",
             "id": "456"
          },
   "limit": {
               "limitMb": 0,
               "limitPercent": 0
            }
}

如前所述,我已经在针对相同软件 API 的其他脚本中多次执行过这种精确操作,但这次我对这种行为感到茫然。任何帮助表示赞赏。谢谢!

4

1 回答 1

0

轻松修复

这是一个简化的样本。在我的实际脚本$newId = 456中,实际上是从另一个 API 调用分配的。因此它也是一个对象。只需在更改 id 以使其成为字符串的行中引用它即可解决问题:

$restOut.id = "$newId"

代替

$restOut.id = $newId
于 2020-07-08T10:55:34.793 回答