我有一个Powershell脚本,该脚本调用要在Azure Runbook中运行的API以使其自动化。从Web请求获取响应需要花费超过4分钟的时间,因此我只需要启动并忘记它,以避免在Azure中触发错误。
我已经尝试过使用Start-Job和-asJob,但是它们中的任何一个都没有运气。我是Powershell的新手,我曾经尝试过像疯了似的谷歌搜索,但是运气不高。
在不作为工作运行时,一切正常。任何帮助将不胜感激!
编辑:经过进一步的挖掘后,我认为这是因为Azure的Powershell处于“受限语言模式”,或者至少由于某种原因受到了限制,因为我收到此错误Cannot invoke method. Method invocation is supported only on core types in this language mode.
而且脚本在我的本地计算机上也可以正常运行。还有别的开火和忘记的方法吗?
脚本:
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 ...