Powershell-使用多个头调用RestMethod



我正在尝试使用Powershell中的Invoke-Restmethod来调用API(我对此还很陌生(。我可以将其发送到POST并返回jwt访问令牌。我也可以使用该令牌通过GET返回id,但是我在返回下一组数据的下一步遇到了问题。我可以通过curl手动使其工作。我认为问题可能是因为需要多个标头才能返回租户列表,而我不确定要使用什么格式。

curl脚本如下所示,并按预期工作:

curl -XGET -H "Authorization: Bearer <jwt access token>" -H "ID: <id>" https://theapiurl.com/.......

我在powershell中尝试了多种方法来实现这一点,最近一次如下,但我尝试的都不起作用。我已经尝试返回单独的$headers内容并构建一个字符串(即$headers2=$.headers.Item(Authorization(+……(但这也不起作用。老实说,我已经尝试了很多不同的东西,我忘记了我有什么,也没有尝试

$headers = @{
'ID' = $id
'Authorization' = $auth_string
}

$response = Invoke-RestMethod -Method Get -Headers $headers -Uri $url

请你告诉我添加多个标题的正确方法(我认为这是问题所在,我做错了什么(?

如果它对其他人有用,设置这个commandlet参数的另一种语法如下(上传到GitHub发布库的真实工作示例(。在parameters对象中设置所有开关(不带连字符(是很有用的,如下所示:

$upload_params = @{
Uri = $upload_uri + "?name=$asset_name"
Method = 'POST'
Headers = @{
'Authorization' = "token $github_token"
'Accept' = 'application/vnd.github.everest-preview+json'
}
InFile = $asset
ContentType = 'application/octet-stream'
}
"Uploading $asset..."
$upload = Invoke-RestMethod @upload_params
"The server returned:"
echo $upload

变量$upload包含从服务器返回的完整对象(从json转换为PowerShell对象(。所以,例如,你也可以得到这样的obect的属性:

"Upload successfully posted as " + $upload.url 

感谢所有的回复-没有一个是真正的答案,但它们确实给了我信心,我正在以正确的方式做这件事。

我一直在使用PS写入主机来检查返回的数据——这对令牌和ID有效,但对下一步无效。我没有得到错误,只是没有数据。(在命令提示符窗口中手动测试时,我确实看到了返回的数据(。当我在PS中添加-OutFile并检查文件时,我意识到它一直在工作,PS只是没有向我显示结果。浪费了2个小时,尽管我因此学到了更多!

最新更新