我需要使用Power Shell从请求中获取成功和/或错误状态代码。而且我总是处于空白状态。
我尝试使用Invoke-WebRequest和Invoke-RestMethod。 我的通话成功,但是找不到获取状态码的方法。
这是目前的写法:
$resource = "some url"
$Logfile = "C:/path/log.log"
function LogWrite
{
Param([string]$logstring)
Add-content $logfile -value $logstring
}
Try
{
$Response = Invoke-WebRequest -Method Post -Uri $resource
Write-Output("Success.")
LogWrite $Date
LogWrite SuccessOnCall
LogWrite $Response.StatusCode
}
Catch
{
$ErrorMessage = $_.Exception.Message
Write-Output($ErrorMessage)
$FailedItem = $_.Exception
Write-Output($FailedItem)
LogWrite $Date
LogWrite ErrorOnCall
LogWrite $ErrorMessage
Break
}
我也尝试过:
LogWrite "StatusCode:" $Response.Exception.Response.StatusCode.value__
我使用了这个问题(和其他链接):Invoke-Restmethod: how do I get the return code?
尝试解决此问题,我的日志确实写了“ SuccessOnCall”,但StatusCode为空。
谢谢。
答案 0 :(得分:2)
您是否尝试过使用选择对象进行管道输送?
Invoke-WebRequest -Uri apiEndpoint -UseBasicParsing | Select-Object StatusCode
输出
StatusCode
----------
200
或者只是获取状态码
Invoke-WebRequest -Uri apiEndpoint -UseBasicParsing | Select-Object -Expand StatusCode
输出
200
处理不成功的案件,
在PowerShell v#7上+包含-SkipHttpErrorCheck
parameter
要么
您可能需要使用$Error
数组来获取最新的错误并相应地访问属性。