Я новичок в PowerShell. У меня есть сценарий PowerShell, который в основном выполняет запрос REST API и возвращает ответ JSON. Но у меня проблема с командлетом Invoke-RestMethod. Я имею в виду, что сценарий иногда не ждет ответа и продолжает следующую строку кода.
Есть ли какой-то трюк в PowerShell, который просит код дождаться ответа API, а затем запустить оставшийся код. Ниже мой код
if ($EventID -eq '4726') {
$ad_user = "[email protected]"
$jsonbody = @{
"setupName" = "avayadev-or"
"instanceName" = "000_JumpServer_DMZ"
"command" = "$Command"
"parameters" = @{
"mobile" = "$getMobileAttr"
"ad_user" = "$ad_user"
"label" = "$environment"
}
"eventToken" = "optional"
} | ConvertTo-Json
#$response = Start-Job {
# Invoke-RestMethod -Uri $uri -Method $verb -Body $jsonbody -Headers $header
#} | wait-job | receive-job
#$response = Invoke-RestMethod -Uri $uri -Method $verb -Body $jsonbody -Headers $header
$response = Invoke-WebRequest -Uri $uri -Method $verb -Body $jsonbody -Headers $header
$EventTrigger = $translEvent4726
Write-Output "Response is: $response"
PushLogs -transaction $EventTrigger -adUser $ad_user -transResult $response
}
Я пробовал много способов, таких как использование Out-Null и Wait-Job, Recieve-Job, но не смог заставить его работать. Любая помощь очень ценится.
также используйте Invoke-RestMethod с API. нет переключателя -Wait, так как он всегда возвращает ответы сервера. может на сервере есть защита от флуда? посмотрите ответы.
@GuentherSchmitz ответ представляет собой ответ JSON, как показано ниже. { status=Success, message=Command submitted, eventToken=optional } Моя проблема в том, что сценарий иногда не ждет ответа.
Я имел в виду ответ от неудачников.
@GuentherSchmitz Я пробовал Invoke-RestMethod, но не повезло. Ответ нулевой, потому что он не ждет результата и, следовательно, ничего не печатает в ответе.
Попробуйте установить параметр TimeoutSec: Invoke-WebRequest $ Uri -TimeoutSec 9999
Согласно официальной документации, значение по умолчанию - 0, что является неопределенным. Однако в некоторых блогах я видел уведомление о том, что это неверно, и время ожидания по умолчанию может составлять 100 секунд, поэтому стоит попробовать. К сожалению, у меня нет вызова API, который я мог бы протестировать, что заняло бы такое много времени.
Вы нашли какое-либо решение / обходной путь?





Я не думаю, что вам нужно
| ConvertTo-Jsonпробовать без конвертации. также: каково содержание$response?