我尝试在Powershell中使用Start-Job和Pocke-RestMethod发送并行POST请求。我遇到了一个问题,当头不发送时,当我在脚本块中调用Sparke-RestMethod时。
当我像这样使用不带脚本块的Jocke-RestMethod时:
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Accept-Language", "en-US")
$headers.Add("X-Correlation-ID", "TEST1")
$headers.Add("Accept", "text/plain")
$headers.Add("Authorization", "Bearer <token>")
Invoke-RestMethod '<uri>' -Method 'POST' -Headers $headers -OutFile "C:\OutFiles\File1.txt"
它工作正常。
当我像这样使用脚本块时:
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Accept-Language", "en-US")
$headers.Add("X-Correlation-ID", "TEST1")
$headers.Add("Accept", "text/plain")
$headers.Add("Authorization", "Bearer <token>")
Start-Job {Invoke-RestMethod '<uri>' -Method 'POST' -Headers $headers -OutFile "C:\OutFiles\File1.txt"}
Get-Job|Wait-Job
请求返回401,当我在K9 S中查看请求时,它没有显示我发送的任何报头。
我试着像这样构造headers变量:
$headers2 = @{
"Accept-Language" = "en-US"
"X-Correlation-ID" = "TEST1"
"Accept" = "text/plain"
"Authorization" = "Bearer <token>"
}
我试着为Start-Job使用值为“Default”的-Authentication参数,因为它说,这是该方法允许的唯一值。这两件事都没有帮助。
对于上下文,我尝试调用一个端点,该端点托管在Azure AKS中,如果这有任何区别的话。
我是否错误地使用了Start-Job和Ranke-RestMethod的组合?
1条答案
按热度按时间cbjzeqam1#
我使用的Start-Job和Picke-RestMethod的组合是错误的?
在脚本块中使用
Start-Job
和Invoke-RestMethod
时,您面临的头不被发送的问题可能是由于变量范围。要解决此问题,可以使用
Start-Job
的-ArgumentList
参数将$headers
变量作为参数传递给脚本块。我使用
GET
方法和一个示例端点来检查同一脚本块中的Start-Job
和Invoke-RestMethod
。在本例中,将方法更改为POST
并尝试相同的代码。结果:
一旦运行上述代码,文件已生成如下。