发送请求时在 PowerShell 中使用括号

Using brackets in PowerShell when sending a request

我正在尝试在 ISE 中发送包含以下正文的请求:

$body = @{
  'roles'=['write'],
  "grantedToIdentities": [{
    "application": {
      "id": "xx-7736-4e25-95ad-3fa95f62b66e",
      "displayName": "Contoso Time Manager App"
    }
  }]
}

$Result = Invoke-RestMethod -Uri 'https://graph.microsoft.com/v1.0/sites/xx-53D2-xx-A368-A7F3E475F0A0/permissions' -Headers $Headers
write-host $Result

但是我可以看到我需要转义括号。关于如何提出这样的请求有什么建议吗?

如果你想在PowerShell中表达一个数组,你可以使用@()语法。此外,您必须省略每个 属性 后的逗号,并使用 @{} 语法定义 objects/hashtables。这就是您的 body 的样子:

$body = @{
    roles               = @('write')
    grantedToIdentities = @( @{
            application = @{
                id          = "xx-7736-4e25-95ad-3fa95f62b66e"
                displayName = "Contoso Time Manager App"
            }
        })
}

这就是对应的 JSON 的样子:

{
  "roles": [
    "write"
  ],
  "grantedToIdentities": [
    {
      "application": {
        "id": "xx-7736-4e25-95ad-3fa95f62b66e",
        "displayName": "Contoso Time Manager App"
      }
    }
  ]
}

这将匹配 Create permission Graph request 的预期负载。

⚠ 注意: 您没有将 $body object 添加到示例中的请求中。