Search code examples
powershellinvoke-webrequest

Exit from a command if it takes too much time in powershell


$uri="http:\\www.SomeUrl.com"
Measure-Command { $request = Invoke-WebRequest -Uri $uri -UseBasicParsing}

In above powershell script, how can I exit from Invoke-WebRequest if it takes time more than 10 secs, and return a error code if possible.


Solution

  • You can use the Timeout parameter to the Invoke-WebRequest command,

    $uri="http://www.SomeUrl.com"
    Measure-Command { $request = Invoke-WebRequest -Uri $uri -UseBasicParsing -Timeout 10}
    

    You can cover it with try / catch block to get the error message.

    try {
        $uri="http://www.SomeUrl.com"
        Measure-Command { $request = Invoke-WebRequest -Uri $uri -UseBasicParsing -Timeout 10 -ErrorAction Stop}
    }
    catch {
        Write-Output "Timeout occured. Exception: $_"
    }
    

    You can also use -Headers @{"Cache-Control"="no-cache"} with Invoke-WebRequest which will not cache the pages you are visiting.