How to get StatusCode from request in PowerShell

André G picture André G · Apr 19, 2019 · Viewed 9.7k times · Source

I need to get success and/or error status code from a request using power shell. And i'm always getting a blank status.

I have tried with Invoke-WebRequest and Invoke-RestMethod. I have sucess on the call but can't find a way of getting the status code.

Here how is currently written:

$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
}

I have also tried:

LogWrite "StatusCode:" $Response.Exception.Response.StatusCode.value__ 

I used this question (and other links) : Invoke-Restmethod: how do I get the return code?

Trying to solve this, my log does write "SuccessOnCall" but the StatusCode is blank.

Thank you.

Answer

ManiVI picture ManiVI · May 21, 2020

did you try pipe'ing with select-object ?

Invoke-WebRequest -Uri apiEndpoint -UseBasicParsing | Select-Object StatusCode

output

StatusCode
 ----------
   200

or just to get status code

Invoke-WebRequest -Uri apiEndpoint -UseBasicParsing | Select-Object -Expand StatusCode

output

200

to handle unsuccessful cases, on PowerShell v#7 + include -SkipHttpErrorCheck parameter or you may need to make use of $Error array to get most recent error and access properties accordingly.