Public/Network/Get-WebPortalHTMLCode.ps1

FUNCTION Get-WebPortalHTMLCode {

    [CmdletBinding()] 
    PARAM (        
        [Parameter(Mandatory)]
        $IP,
        [ValidateSet('HTTP', 'HTTPS')]
        $Protocol = "HTTPS",               
        $Port = 443
    )

    IF ($PSVersionTable.PSVersion.Major -lt 7) { Write-Warning "This PowerShell Command requires PowerShell 7 to run properly."; RETURN }

    $Page = (Invoke-WebRequest -Uri "$($Protocol)://$($IP):$Port" -UseBasicParsing -TimeoutSec 10 -ErrorAction SilentlyContinue -SkipCertificateCheck).RawContent

    IF ($Page -match '(?i)content\s*=\s*["'']?\d+;\s*url\s*=\s*''([^"''>\s]+)') {

        $NewURL = $matches[1]
        IF ($NewURL.Substring(0,1) -eq "/") { $NewURL = $NewURL.Substring(1,$NewURL.Length-1) }

        $Page += (Invoke-WebRequest -Uri "$($Protocol)://$($IP):$Port/$NewURL" -UseBasicParsing -TimeoutSec 10 -ErrorAction SilentlyContinue -SkipCertificateCheck).RawContent
  
    }
    ELSEIF ($Page -match '(?i)content\s*=\s*["'']?\d+;\s*url\s*=\s*''([^"''>\s]+)') {

        $NewURL = $matches[1]
        IF ($NewURL.Substring(0,1) -eq "/") { $NewURL = $NewURL.Substring(1,$NewURL.Length-1) }

        $Page += (Invoke-WebRequest -Uri "$($Protocol)://$($IP):$Port/$NewURL" -UseBasicParsing -TimeoutSec 10 -ErrorAction SilentlyContinue -SkipCertificateCheck).RawContent
  
    }

    RETURN $Page
}