Powershell - Invoke-RestMethod - POST 嵌套 JSON
Powershell - Invoke-RestMethod - POST nested JSON
我正在尝试与 API 交互以 POST 我们使用的服务的一些数据,以便将一些电子邮件地址添加到策略中。这最终会获取一个电子邮件地址列表并循环遍历每个地址,但现在我只是想让它与单个地址一起工作。
我正在使用 Powershell 7,我会说我是 powershell 的中级,但这是我第一次尝试与 API 交互,使用 JSON,并使用 Invoke-RESTMethod命令行开关。该服务的 API 参考显示了许多其他语言的代码示例,只是 PS!
这是我运行要解决的问题。我正在尝试制定一个 -Body 语句,它看起来是 3 个元素而不是两个。以下是 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 headers 没问题(到目前为止,我可以请求我的 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
您正在考虑在保管人中拥有多个电子邮件 ID?
$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"
}
]
}
我正在尝试与 API 交互以 POST 我们使用的服务的一些数据,以便将一些电子邮件地址添加到策略中。这最终会获取一个电子邮件地址列表并循环遍历每个地址,但现在我只是想让它与单个地址一起工作。
我正在使用 Powershell 7,我会说我是 powershell 的中级,但这是我第一次尝试与 API 交互,使用 JSON,并使用 Invoke-RESTMethod命令行开关。该服务的 API 参考显示了许多其他语言的代码示例,只是 PS!
这是我运行要解决的问题。我正在尝试制定一个 -Body 语句,它看起来是 3 个元素而不是两个。以下是 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 headers 没问题(到目前为止,我可以请求我的 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
您正在考虑在保管人中拥有多个电子邮件 ID?
$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"
}
]
}