Invoke-RestMethod的错误处理 - Powershell [英] Error Handling for Invoke-RestMethod - 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屋!