Invoke-RestMethod的错误处理 - Powershell [英] Error Handling for Invoke-RestMethod - Powershell

查看:509
本文介绍了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  - 方法PUT -Headers $ headers 

如果IP在其他地方使用,我将得到409冲突错误(请求格式正确,但与另一资源或权限冲突)。



我想检查错误是409,然后告诉它做一些其他事情。

解决方案

这是有点尴尬,但是只要我做的更好,唯一的办法就是不用做更复杂的事情,比如使用.NET的WebRequest和ConvertFrom-Json(或者你所期望的任何数据格式) 。

  try {
Invoke-RestMethod ...你的参数在这里...
} catch {
#挖掘异常以获取响应详细信息。
#注意,value__不是打字错误。
写主机StatusCode:$ _。Exception.Response.StatusCode.value__
写入主机StatusDescription:$ _。Exception.Response.StatusDescription
}


I have a powershell script using the Skytap API (REST). I would like to catch the error, if there is one, and try to display it.

For example, we are changing the IP:

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

If the IP is used somewhere else, I will get the 409 Conflict Error (Request is well-formed but conflicts with another resource or permission).

I would like to check if the error is 409 and then tell it to do something else about it.

解决方案

This is somewhat awkward but the only way to do it as far as I know without doing something more complicated like using .NET's WebRequest and ConvertFrom-Json (or whatever data format you are expecting).

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
}

这篇关于Invoke-RestMethod的错误处理 - Powershell的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆