From: https://stackoverflow.com/questions/39319680/onelogin-rest-api-with-powershells-invoke-restmethod
|
#generic Invoke-RestMethod / WebRequest error handler #https://stackoverflow.com/questions/39319680/onelogin-rest-api-with-powershells-invoke-restmethod function Failure { $global:helpme = $body $global:helpmoref = $moref $global:result = $_.Exception.Response.GetResponseStream() $global:reader = New-Object System.IO.StreamReader($global:result) $global:responseBody = $global:reader.ReadToEnd(); Write-Host -BackgroundColor:Black -ForegroundColor:Red "Status: A system exception was caught." Write-Host -BackgroundColor:Black -ForegroundColor:Red $global:responsebody Write-Host -BackgroundColor:Black -ForegroundColor:Red "The request body has been saved to `$global:helpme" break } |
Then, wrap all of your Invoke-RestMethod calls in a try Catch block like this.
|
<span class="pln">try </span><span class="pun">{</span><span class="pln"> $e </span><span class="pun">=</span> <span class="typ">Invoke</span><span class="pun">-</span><span class="typ">WebRequest</span> <span class="str">'https://api.us.onelogin.com/api/1/users/$id'</span> <span class="str">` -Headers @{ Authorization = "bearer:$token" } `</span> <span class="pun">-</span><span class="typ">Body</span> <span class="pun">(</span> <span class="pun">@{</span><span class="pln"> phone </span><span class="pun">=</span> <span class="str">"7709746046"</span> <span class="pun">}</span> <span class="pun">|</span> <span class="typ">ConvertTo</span><span class="pun">-</span><span class="typ">Json</span> <span class="pun">)</span> <span class="str">` -Method Put -ErrorAction:Stop -ContentType 'application/json' } catch {Failure}</span> |
Now when you run into an error, you can see the actual message, like this
|
<span class="pun">></span> <span class="typ">Status</span><span class="pun">:</span><span class="pln"> A system exception was caught</span><span class="pun">.</span> <span class="pun">{</span><span class="str">"status"</span><span class="pun">:{</span><span class="str">"error"</span><span class="pun">:</span><span class="pln">true</span><span class="pun">,</span><span class="str">"code"</span><span class="pun">:</span><span class="lit">400</span><span class="pun">,</span><span class="str">"type"</span><span class="pun">:</span><span class="str">"bad request"</span><span class="pun">,</span><span class="str">"message"</span><span class="pun">:{</span><span class="str">"description"</span><span class="pun">:</span><span class="str">"notes is not a valid attribute for user model"</span><span class="pun">,</span><span class="str">"attribute"</span><span class="pun">:</span><span class="str">"notes"</span><span class="pun">}}}</span> <span class="typ">The</span><span class="pln"> request body has been saved to $global</span><span class="pun">:</span><span class="pln">helpme</span> |