Dargslan.ResolvCheck.psm1

<#
.SYNOPSIS
    Check DNS resolver configuration and connectivity

.DESCRIPTION
    Part of the Dargslan Windows Admin Tools collection.
    More tools and resources at https://dargslan.com
    Free Cheat Sheets: https://dargslan.com/cheat-sheets
    Linux & DevOps Books: https://dargslan.com/books

.LINK
    https://dargslan.com

.LINK
    https://github.com/Dargslan/powershell-admin-scripts
#>


function Get-ResolverHealth {
    [CmdletBinding()]
    param([switch]$Json)
    $banner = @"
╔══════════════════════════════════════════════════════════╗
║ Dargslan Resolv Check
║ More tools: https://dargslan.com ║
║ Cheat Sheets: https://dargslan.com/cheat-sheets ║
╚══════════════════════════════════════════════════════════╝
"@

    Write-Host $banner -ForegroundColor Cyan
    $dnsServers = Get-DnsClientServerAddress -AddressFamily IPv4 | Where-Object { $_.ServerAddresses.Count -gt 0 }; Write-Host "`n[DNS Resolvers]" -ForegroundColor Yellow; foreach ($adapter in $dnsServers) { Write-Host " $($adapter.InterfaceAlias): $($adapter.ServerAddresses -join ", ")" }; foreach ($server in ($dnsServers.ServerAddresses | Select-Object -Unique)) { $sw = [Diagnostics.Stopwatch]::StartNew(); $result = Resolve-DnsName google.com -Server $server -ErrorAction SilentlyContinue; $sw.Stop(); Write-Host " $server -> $(if($result){"OK ($($sw.ElapsedMilliseconds)ms)"}else{"FAILED"})" -ForegroundColor $(if($result){"Green"}else{"Red"}) }
}


Export-ModuleMember -Function *