У меня есть сценарий powershell, который вызывает API, который я пытаюсь запустить в модуле Runbook Azure, чтобы автоматизировать его.Получение ответа от веб-запроса занимает более 4 минут, поэтому мне нужно просто запустить его и забыть, чтобы избежать появления ошибок в Azure.
Я пытался использовать Start-Job и -asJob, но безуспешно с любым из них.Я новичок в powershell, и я пробовал гуглить, как сумасшедший, но мне не повезло.
Все работает, когда не работает как работа.Любая помощь будет принята с благодарностью!
РЕДАКТИРОВАТЬ: после еще нескольких копаний, я думаю, это потому, что PowerShell Azure находится в "режиме ограниченного языка", или, по крайней мере, каким-то образом ограничен, потому что я получаю эту ошибку 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 ...