Update list-dns-servers.ps1

This commit is contained in:
Markus Fleschutz 2024-03-24 18:13:45 +01:00
parent 85b5d2b84f
commit 4de7ec9831

View File

@ -2,13 +2,13 @@
.SYNOPSIS .SYNOPSIS
Lists DNS servers Lists DNS servers
.DESCRIPTION .DESCRIPTION
This PowerShell script measures the latency of public and free DNS servers and lists it. This PowerShell script list public and free DNS servers together with IPv4 addresses and measured latency.
.EXAMPLE .EXAMPLE
PS> ./list-dns-servers.ps1 PS> ./list-dns-servers.ps1
Provider IPv4 Latency DNS PROVIDER IPv4 ADDRESSES LATENCY
-------- ---- ------- ------------ ---- --------- -------
AdGuard DNS (Cyprus) 94.140.14.14 / 94.140.15.15 222 / 205 ms AdGuard DNS (Cyprus) 94.140.14.14 · 94.140.15.15 222 · 205 ms
... ...
.LINK .LINK
https://github.com/fleschutz/PowerShell https://github.com/fleschutz/PowerShell
@ -16,24 +16,24 @@
Author: Markus Fleschutz | License: CC0 Author: Markus Fleschutz | License: CC0
#> #>
function CheckDNSServer { param($Provider, $IPv4Pri, $IPv4Sec) function MeasureDNSServer([string]$provider, [string]$IPv4Pri, [string]$IPv4Sec) {
$SW=[system.diagnostics.stopwatch]::startNew();$null=(nslookup fleschutz.de $IPv4Pri 2>$null);[int]$Lat1=$SW.Elapsed.TotalMilliseconds $time=[system.diagnostics.stopwatch]::startNew();$null=(nslookup fleschutz.de $IPv4Pri 2>$null);[int]$lat1=$time.Elapsed.TotalMilliseconds
$SW=[system.diagnostics.stopwatch]::startNew();$null=(nslookup fleschutz.de $IPv4Sec 2>$null);[int]$Lat2=$SW.Elapsed.TotalMilliseconds $time=[system.diagnostics.stopwatch]::startNew();$null=(nslookup fleschutz.de $IPv4Sec 2>$null);[int]$lat2=$time.Elapsed.TotalMilliseconds
New-Object PSObject -Property @{ Provider=$Provider; IPv4="$IPv4Pri / $IPv4Sec"; Latency="$Lat1 / $Lat2 ms" } New-Object PSObject -Property @{ 'DNS PROVIDER'=$provider; 'IPv4 ADDRESSES'="$IPv4Pri · $IPv4Sec"; LATENCY="$lat1 · $lat2 ms" }
} }
function List-DNS-Servers { function List-DNS-Servers {
Write-Progress "Loading data/public-dns-servers.csv..." Write-Progress "Loading data/public-dns-servers.csv..."
$table = Import-CSV "$PSScriptRoot/../data/public-dns-servers.csv" $table = Import-CSV "$PSScriptRoot/../data/public-dns-servers.csv"
Write-Progress -completed "Done." Write-Progress -completed "Done."
foreach($row in $table) { CheckDNSServer $row.PROVIDER $row.IPv4_PRI $row.IPv4_SEC } foreach($row in $table) { MeasureDNSServer $row.PROVIDER $row.IPv4_PRI $row.IPv4_SEC }
} }
try { try {
List-DNS-Servers | Format-Table -property @{e='Provider';width=50},@{e='IPv4';width=32},@{e='Latency';width=15} List-DNS-Servers | Format-Table -property @{e='DNS PROVIDER';width=50},@{e='IPv4 ADDRESSES';width=32},@{e='LATENCY';width=15}
exit 0 # success exit 0 # success
} catch { } catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])" "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"