Azure 在启动作业中运行时调用未到达API的Web请求Post

Azure 在启动作业中运行时调用未到达API的Web请求Post,azure,powershell,azure-powershell,Azure,Powershell,Azure Powershell,我有一个powershell脚本,它调用一个API,我正试图在Azure runbook中运行该API以实现自动化。从Web请求返回响应需要4分钟以上的时间,因此我只需启动并忘记它,以避免在Azure中触发错误 我试过使用Start-Job和-asJob,但两个都没有成功。我是powershell的新手,我曾疯狂地尝试过谷歌搜索,但运气不太好 当不作为作业运行时,一切正常。任何帮助都将不胜感激 编辑:经过进一步挖掘,我认为这是因为Azure的powershell处于“受限语言模式”,或者至少受到

我有一个powershell脚本,它调用一个API,我正试图在Azure runbook中运行该API以实现自动化。从Web请求返回响应需要4分钟以上的时间,因此我只需启动并忘记它,以避免在Azure中触发错误

我试过使用Start-Job和-asJob,但两个都没有成功。我是powershell的新手,我曾疯狂地尝试过谷歌搜索,但运气不太好

当不作为作业运行时,一切正常。任何帮助都将不胜感激

编辑:经过进一步挖掘,我认为这是因为Azure的powershell处于“受限语言模式”,或者至少受到某种限制,因为我收到此错误
无法调用方法。在此语言模式下,仅在核心类型上支持方法调用。
而且脚本在本地计算机上运行良好。有没有其他方法可以让你忘记

脚本:

    Start-Job -ScriptBlock {
    $url = "api.com/apitocall"
    $ID = [System.guid]::New("id")
    $ApiKey = "apikey"
    $credPair = "$($ID):$($ApiKey)"
    $encodedCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($credPair))
    $headers = @{ Authorization = "Basic $encodedCredentials" }
    $headers.Add('Accept','Application/Json')
    $responseData = Invoke-WebRequest -Uri $url -Method POST -Headers $headers - 
    UseBasicParsing -TimeoutSec 660
    Write-Output($responseData)
    }
Get-Job | Wait-Job
输出:

    Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
1      Job1            BackgroundJob   Running       True            localhost            ...                      
1      Job1            BackgroundJob   Completed     True            localhost            ...      

我从未听说过,但使用
$ExecutionContext.SessionState.LanguageMode='FullLanguage'
似乎很容易绕过它。很遗憾,我无法测试。为什么不使用
System.Net.webrequest
$uri=“YourURL”$r=[System.Net.WebRequest]::Create($uri)$r、 方法=“获取”$resp=$r.GetResponse()$reqstream=$resp.GetResponseStream()$sr=新对象System.IO.StreamReader$reqstream$结果=$sr.ReadToEnd()$结果不幸的是,这些解决方案不起作用。我可以通过将文本编码部分移到脚本块之外来运行作业。。。由于某种原因,这是抛出错误。我想出的最佳解决方案是启动作业,让它启动,然后在Azure超时之前关闭作业。虽然不理想,但我认为这是目前在Azure中可以做到的最好的事情!