param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$BaseUrl, [ValidateNotNullOrEmpty()] [string]$OutputFile = "sitemap.xml", [int]$MaxDepth = 3 ) function Resolve-Url { param( [string]$Base, [string]$Reference ) try { $baseUri = [uri]$Base $resolved = [uri]::new($baseUri, $Reference) return $resolved.AbsoluteUri } catch { return $null } } function Get-PageLinks { param( [string]$Url, [string]$Domain ) $links = @() try { $response = Invoke-WebRequest -Uri $Url -UseBasicParsing -ErrorAction Stop foreach ($a in $response.ParsedHtml.getElementsByTagName("a")) { $href = $a.href if (-not $href) { continue } $abs = Resolve-Url -Base $Url -Reference $href if (-not $abs) { continue } $uri = [uri]$abs if ($uri.Host -eq $Domain) { $clean = $uri.GetLeftPart("Path") $links += $clean } } # Optionally collect URLs from ,