mirror of
https://github.com/fleschutz/PowerShell.git
synced 2024-12-16 19:50:45 +01:00
63 lines
1.9 KiB
Markdown
63 lines
1.9 KiB
Markdown
|
## The *list-dns-servers.ps1* Script
|
||
|
|
||
|
list-dns-servers.ps1
|
||
|
|
||
|
|
||
|
## Parameters
|
||
|
```powershell
|
||
|
|
||
|
|
||
|
[<CommonParameters>]
|
||
|
This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction,
|
||
|
WarningVariable, OutBuffer, PipelineVariable, and OutVariable.
|
||
|
```
|
||
|
|
||
|
## Source Code
|
||
|
```powershell
|
||
|
<#
|
||
|
.SYNOPSIS
|
||
|
Lists DNS servers
|
||
|
.DESCRIPTION
|
||
|
This PowerShell script measures the latency of public and free DNS servers and lists it.
|
||
|
.EXAMPLE
|
||
|
PS> ./list-dns-servers
|
||
|
|
||
|
Provider IPv4 Latency
|
||
|
-------- ---- -------
|
||
|
AdGuard DNS (Cyprus) 94.140.14.14 / 94.140.15.15 222 / 205 ms
|
||
|
...
|
||
|
.LINK
|
||
|
https://github.com/fleschutz/PowerShell
|
||
|
.NOTES
|
||
|
Author: Markus Fleschutz | License: CC0
|
||
|
#>
|
||
|
|
||
|
function CheckDNSServer { param($Provider, $IPv4Pri, $IPv4Sec)
|
||
|
Write-Progress "Measuring latency of $Provider..."
|
||
|
$SW=[system.diagnostics.stopwatch]::startNew();$null=(nslookup fleschutz.de $IPv4Pri 2>$null);[int]$Lat1=$SW.Elapsed.TotalMilliseconds
|
||
|
|
||
|
$SW=[system.diagnostics.stopwatch]::startNew();$null=(nslookup fleschutz.de $IPv4Sec 2>$null);[int]$Lat2=$SW.Elapsed.TotalMilliseconds
|
||
|
|
||
|
New-Object PSObject -Property @{ Provider=$Provider; IPv4="$IPv4Pri / $IPv4Sec"; Latency="$Lat1 / $Lat2 ms" }
|
||
|
}
|
||
|
|
||
|
function List-DNS-Servers {
|
||
|
Write-Progress "Loading Data/public-dns-servers.csv..."
|
||
|
$Table = Import-CSV "$PSScriptRoot/../Data/public-dns-servers.csv"
|
||
|
foreach($Row in $Table) {
|
||
|
CheckDNSServer $Row.PROVIDER $Row.IPv4_PRI $Row.IPv4_SEC
|
||
|
}
|
||
|
Write-Progress -completed "."
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
List-DNS-Servers | Format-Table -property @{e='Provider';width=50},@{e='IPv4';width=32},@{e='Latency';width=15}
|
||
|
exit 0 # success
|
||
|
} catch {
|
||
|
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
|
||
|
exit 1
|
||
|
}
|
||
|
```
|
||
|
|
||
|
*Generated by convert-ps2md.ps1 using the comment-based help of list-dns-servers.ps1*
|