1

I want it to exit when the response status code is 429, how can I do it? my looped ps1 script I don't want to use do or try or catch methods. Is there a simple method? this is my code and i want it to exit when response code 429

'header' = 'header'}
"@
$req = @{
    Uri         = 'https://mywebsite.com/api/'
    Headers     = $headers
    Method      = 'get'
    ContentType = 'application/json'}
while($true){
Invoke-WebRequest @req
status code 429 = exit}
mklement0
  • 382,024
  • 64
  • 607
  • 775
nomiks
  • 19
  • 3

1 Answers1

0

Caveat: Given that your code makes ongoing requests in a tight loop, it should only be run against a test web service / site.

I don't want to use do or try or catch methods.

In Windows PowerShell, you must use try / catch:

while (
 429 -ne 
 $(try { $null=Invoke-WebRequest @req } catch { $_.Exception.Response.StatusCode })
) { }

In PowerShell (Core) 7+, you can use the -SkipHttpErrorCheck switch:

while (429 -ne (Invoke-WebRequest -SkipHttpErrorCheck @req).StatusCode) { }

See this answer for details.

mklement0
  • 382,024
  • 64
  • 607
  • 775