Rehash: Testing for a 302 Redirect

This blog, like any journal, tracks my own personal growth. This means I get to revisit and rehash old posts a lot.   In this case, I’m adding the 302 Redirect check from a few years back to the ServicePointManager callback to accept bad SSL certs into a copy-pastable function to return the 302 Redirect data for a given URL.

Test-Redirect https://gmail.com

Url                                                         302
---                                                         ---
https://gmail.com                                           https://mail.google.com/mail/

 

function Test-Redirect {
     param ( [string[]]$Url = $null );
     begin { 
         [Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; 
     }
     process {
         foreach ($myUrl in $Url) {
             $location = $null;
             $webRequest = [System.Net.WebRequest]::Create($myUrl);
             $webRequest.AllowAutoRedirect = $false;
             $true | Select-Object -Property @{ 
                 n = 'Url'; e = { $myUrl; } 
             }, @{ 
                 n = '302'; e = { 
                     try {
                         $response = $webRequest.GetResponse();
                     } 
                     catch {
                         Write-Warning "Unable to get response for -url '$myUrl'";
                     }
                     if ($response) {
                         $response.Headers.Get('Location');
                     }
                 }
             }
         }
     }
}