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 ,