如何从PowerShell中的请求获取StatusCode

时间:2019-04-19 00:53:40

标签: rest powershell logging invoke-webrequest

我需要使用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为空。

谢谢。

1 个答案:

答案 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数组来获取最新的错误并相应地访问属性。