2015-04-13 8 views
12

Ich habe ein Powershell-Skript mit der Skytap-API (REST). Ich möchte den Fehler, wenn es einen gibt, und versuchen, es anzuzeigen.Fehlerbehandlung für Invoke-RestMethod - Powershell

Zum Beispiel ändern wir die IP-:

Invoke-RestMethod -Uri https://cloud.skytap.com/configurations/XXXXXX/vms/YYYYYY/interfaces/ZZZZZZ?ip=10.0.0.1 -Method PUT -Headers $headers 

Wenn die IP irgendwo anders verwendet wird, werde ich die 409 Conflict Fehler erhalten (Request ist wohlgeformt, aber Konflikte mit einer anderen Ressource oder Erlaubnis).

Ich möchte überprüfen, ob der Fehler 409 ist und dann sagen, es etwas anderes darüber zu tun.

Antwort

30

Dies ist etwas peinlich, aber der einzige Weg, es zu tun, so weit ich weiß, ohne etwas komplizierter zu tun wie .NET WebRequest und ConvertFrom-Json (oder welches Datenformat Sie erwarten).

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 
}