Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell-调用RestMethod-后嵌套JSON_Powershell_Powershell 7.0 - Fatal编程技术网

Powershell-调用RestMethod-后嵌套JSON

Powershell-调用RestMethod-后嵌套JSON,powershell,powershell-7.0,Powershell,Powershell 7.0,我正在尝试与API交互,将一些数据发布到我们使用的服务中,以便将一些电子邮件地址添加到策略中。这将最终获得一个电子邮件地址列表,并对每个地址进行循环,但现在我只想让它使用一个地址 我使用的是Powershell 7,可以说我是Powershell的中间版本,但这是我第一次尝试与API交互,使用JSON和Invoke-RESTMethod命令。该服务的API参考显示了许多其他语言的代码示例,而不是PS 这就是我遇到的问题。我正试图建立一个由三个元素而不是两个元素组成的-Body语句。下面是CURL

我正在尝试与API交互,将一些数据发布到我们使用的服务中,以便将一些电子邮件地址添加到策略中。这将最终获得一个电子邮件地址列表,并对每个地址进行循环,但现在我只想让它使用一个地址

我使用的是Powershell 7,可以说我是Powershell的中间版本,但这是我第一次尝试与API交互,使用JSON和Invoke-RESTMethod命令。该服务的API参考显示了许多其他语言的代码示例,而不是PS

这就是我遇到的问题。我正试图建立一个由三个元素而不是两个元素组成的-Body语句。下面是CURL中的示例语句:

{
  "custodians": [
    {
      "emailId": "john.doe@someorg.com"
    }
  ],
  "action": "add"
}
作用:添加部分是好的,容易豌豆。我正试图找出如何正确设置保管人部分的格式。我不知道如何做三个元素而不是两个。我尝试了{}[]和()的不同组合,但没有成功:

"custodians" = ({"emailId" = "emailaddress@place.com"})
给我一个“赋值表达式无效”错误

给我一个“[”后缺少类型名”错误

这些,以及我键入的其他一些组合,都在VSCode中显示了格式错误,所以我已经知道它们不起作用,我只是不知道为什么。我确定我只是没有破解@、{}、[]或()的正确组合,但我似乎无法在网上找到任何信息(可能是因为我在搜索中没有使用正确的词汇或短语)这显示了如何使用三个元素进行格式化

如果相关或有帮助,下面是我正在处理的整个查询的一个较大的代码示例。假设Auth头很好(我可以请求我的Auth令牌,并且到目前为止没有问题):


您希望在保管人中有多个EmailID

$body = @{
    custodians = @(
        @{emailId = 'emailaddress@place.com' }
        @{emailId = 'emailaddress@place.com' }
        @{emailId = 'emailaddress@place.com' }
    )
    Action = 'add'
}
输出:

$body | ConvertTo-Json

{
  "Action": "add",
  "custodians": [
    {
      "emailId": "emailaddress@place.com"
    },
    {
      "emailId": "emailaddress@place.com"
    },
    {
      "emailId": "emailaddress@place.com"
    }
  ]
}

Daniels answer似乎回答了我关于语法/格式的问题,因为我的代码不再对我大喊大叫。现在我在提交时遇到了一个“无效JSON文档”错误,我确信这在技术上是一个单独的问题。
$headers = @{
    "Authorization" = $bearerAuthValue
    "Accept" = "application/json"
    "Content Type" = "application/json"
} 

$body = @{
    "custodians" = @(emailId = "emailaddress@place.com"),
    "Action" = "add"
}
$uri = "https://thisisanaddress.com"
Invoke-RestMethod -Method 'POST' -Uri $uri -Headers $headers -Body $body
$body = @{
    custodians = @(
        @{emailId = 'emailaddress@place.com' }
        @{emailId = 'emailaddress@place.com' }
        @{emailId = 'emailaddress@place.com' }
    )
    Action = 'add'
}
$body | ConvertTo-Json

{
  "Action": "add",
  "custodians": [
    {
      "emailId": "emailaddress@place.com"
    },
    {
      "emailId": "emailaddress@place.com"
    },
    {
      "emailId": "emailaddress@place.com"
    }
  ]
}