Public/Get-RedirectedUrl.ps1


Function Test-Url {
  param(
    [Parameter(Mandatory,ValueFromPipeline)]
    [String]$Url
  )
  Process {
    if ([System.Uri]::IsWellFormedUriString($Url,[System.UriKind]::Absolute)) {
      return $true
    }
    else {
      return $false
    }
  }
}



Function Get-RedirectedUrl {
  Param(
    [Parameter(Mandatory,ValueFromPipeline)]
    [ValidateScript({
          if (-not ($_ | Test-Url)) {
            throw ('{0}{1} - Failed URL Validation' -f "`n",$_)
          }
          return $true
    })]
    [String]$Url
  )
  begin {
    $RUrls = [System.Collections.Generic.List[string]]::new()
  }
  process {
    $Request = [System.Net.WebRequest]::Create($Url)
    $Response = $Request.GetResponse()
    $RUrls.Add($Response.ResponseUri.ToString())
    $Response.Close()
    $Response.Dispose()
  }
  end {
    return $RUrls
  }
}