Обработка ошибок для 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
}