azure 使用带有Start-Job的Ranke-RestMethod不会发送标头

vx6bjr1n  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(93)

我尝试在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的组合?

cbjzeqam

cbjzeqam1#

我使用的Start-Job和Picke-RestMethod的组合是错误的?
在脚本块中使用Start-JobInvoke-RestMethod时,您面临的头不被发送的问题可能是由于变量范围。
要解决此问题,可以使用Start-Job-ArgumentList参数将$headers变量作为参数传递给脚本块。
我使用GET方法和一个示例端点来检查同一脚本块中的Start-JobInvoke-RestMethod。在本例中,将方法更改为POST并尝试相同的代码。

$headers = @{
        "Accept-Language" = "en-US"
        "X-Correlation-ID" = "TEST1"
        "Accept" = "text/plain"
        "Authorization" = "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ii1LST"
    }
    
    Start-Job -ScriptBlock {
        param (
            $headers
        )
    
        Invoke-RestMethod 'uri' -Method 'GET' -Headers $headers -OutFile "C:\xxx\Terraform\Sample Backen\File1.txt"
    } -ArgumentList $headers
    
    Get-Job | Wait-Job

结果:

一旦运行上述代码,文件已生成如下。

相关问题