【发布时间】:2021-05-27 08:41:26
【问题描述】:
我正在尝试与 API 交互以将一些数据发布到我们使用的服务,以便将一些电子邮件地址添加到策略中。这最终将获取一个电子邮件地址列表并为每个地址循环,但现在我只是想让它与单个地址一起工作。
我使用的是 Powershell 7,我会说我是 powershell 的中级,但这是我第一次尝试与 API 交互、使用 JSON 和使用 Invoke-RESTMethod 命令行开关。该服务的 API 参考显示了许多其他语言的代码示例,而不是 PS!
这是我遇到的问题。我正在尝试制定一个看起来是 3 个元素而不是两个元素的 -Body 语句。这是该示例语句在 CURL 中的样子:
{
"custodians": [
{
"emailId": "john.doe@someorg.com"
}
],
"action": "add"
}
Action:Add 部分很好,很简单。我试图弄清楚如何正确格式化保管人部分。我不知道如何做 3 个元素而不是两个。我尝试了 {} [] 和 () 的不同组合,但无济于事:
"custodians" = ({"emailId" = "emailaddress@place.com"})
给我一个“赋值表达式无效”错误
"custodians" = [{"emailId" = "emailaddress@place.com"}]
和
"custodians" = [@{"emailId" = "emailaddress@place.com"}]
给我一个“'['后缺少类型名称。”错误。
这些,以及我输入的其他一些组合,都在 VSCode 中显示格式错误,所以我已经知道它们不起作用,我只是不知道为什么。我确定我只是没有破解@、{}、[] 或 () 的正确组合,但我似乎无法在网上找到任何信息(可能是因为我在搜索中没有使用正确的词汇或措辞)这显示了如何使用三个元素进行格式化。
如果它相关或有用,这里是我正在处理的整个查询的更大代码示例。假设 Auth 标头很好(到目前为止,我可以请求我的 auth 令牌并执行 GET 没有问题):
$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
【问题讨论】: