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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With