web-dev-qa-db-fra.com

Gestion des erreurs pour Invoke-RestMethod - Powershell

J'ai un script PowerShell utilisant l'API Skytap (REST). Je voudrais attraper l'erreur, s'il y en a une, et essayer de l'afficher.

Par exemple, nous changeons l'IP:

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

Si l'adresse IP est utilisée ailleurs, j'obtiendrai l'erreur de conflit 409 (la demande est bien formée mais entre en conflit avec une autre ressource ou autorisation).

Je voudrais vérifier si l'erreur est 409, puis lui dire de faire autre chose.

19
user01230

C'est un peu gênant, mais la seule façon de le faire pour autant que je sache sans faire quelque chose de plus compliqué comme utiliser WebRequest et ConvertFrom-Json de .NET (ou le format de données que vous attendez).

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