Hi,
the powershell command-let Invoke-WebRequest does not follow an http redirect.
The solution is to call Invoke-WebRequest recursivly with the redirect URL from the location header field when http code 301 or 308 is returned.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | $sRedirectTo = $null do { $oWebResponse = $null try { $oWebResponse = Invoke-WebRequest $sURL } catch { $oWebResponse = $_ .Exception.Response write-host ( "Exception: {0}" -f $_ .Exception.Message) } if ( $oWebResponse .StatusCode -ne 200) { $aRedirectTo = $oWebResponse .Headers.GetValues( "location" ) if ( $aRedirectTo .Count -ge 1) { $sRedirectTo = $aRedirectTo [0] } else { write-host ( "No location URL in header" ) break } if ( -not [string] ::IsNullOrEmpty( $sRedirectTo )) { write-host ( "Redirect to {0}" -f ( $sRedirectTo )) $sURL = $sRedirectTo } else { write-host ( "location URL Null" ) break } } else { Write-Output ( "OK Location = {1} HttpCode = {0}" -f $oWebResponse .StatusCode, $sRedirectTo ) break } } while ( $true ) |
Michael