Обработка ошибок для Invoke-RestMethod - Powershell
У меня есть powershell script, используя Skytap API (REST). Я хотел бы поймать ошибку, если она есть, и попытаться ее отобразить.
Например, мы меняем IP:
Invoke-RestMethod -Uri https://cloud.skytap.com/configurations/XXXXXX/vms/YYYYYY/interfaces/ZZZZZZ?ip=10.0.0.1 -Method PUT -Headers $headers
Если IP используется где-то в другом месте, я получу 409 Ошибка Конфликта (Запрос хорошо сформирован, но конфликтует с другим ресурсом или разрешением).
Я хотел бы проверить, является ли ошибка 409, а затем сказать ей, чтобы сделать что-то еще.
Ответы
Ответ 1
Это несколько неудобно, но единственный способ сделать это, насколько я знаю, не делая что-то более сложное, как использование .NET WebRequest и ConvertFrom-Json (или любой другой формат данных, который вы ожидаете).
try {
Invoke-RestMethod ... your parameters here ...
} catch {
# Dig into the exception to get the Response details.
# Note that value__ is not a typo.
Write-Host "StatusCode:" $_.Exception.Response.StatusCode.value__
Write-Host "StatusDescription:" $_.Exception.Response.StatusDescription
}