web-dev-qa-db-ja.com

Invoke-RestMethodのエラー処理-Powershell

Skytap API(REST)を使用したPowerShellスクリプトがあります。エラーがあれば、それをキャッチして表示しようと思います。

たとえば、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 Conflict Errorが発生します(要求は整形式ですが、別のリソースまたは許可と競合しています)。

エラーが409であるかどうかを確認し、それについて何か他のことをするように伝えたいと思います。

19
user01230

これはやや厄介ですが、.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
}
50
David Anderson