Public/Network/Test-Dns.ps1
function Test-Dns { # .SYNOPSIS # Checks the DNS resolution # .DESCRIPTION # This PowerShell script checks the DNS resolution with frequently used domain names. # .EXAMPLE # PS> ./check-dns # ✅ DNS resolution is 11.8 domains per second [CmdletBinding()] param ( [Parameter(Mandatory = $false)] [String[]]$InterfaceAlias, [Parameter(Mandatory = $false)] [int]$ThrottleLimit ) process { try { $StopWatch = [system.diagnostics.stopwatch]::startNew() Write-Progress "Reading Data/domain-names.csv..." $PathToRepo = "$PSScriptRoot/.." $Table = Import-Csv "$PathToRepo/Data/domain-names.csv" foreach ($Row in $Table) { Write-Progress "Resolving $($Row.Domain) ..." if ($IsLinux) { $null = nslookup $Row.Domain } else { $null = Resolve-DnsName $Row.Domain } } $Count = $Table.Length [int]$Elapsed = $StopWatch.Elapsed.TotalSeconds $Average = [math]::round($Count / $Elapsed, 1) # & "$PSScriptRoot/give-reply.ps1" "$Average domains per second DNS resolution" # success } catch { # Write-Log $_.Exception.ErrorRecord Out-Verbose $fxn "Errored: $($_.CategoryInfo.Category) : $($_.CategoryInfo.Reason) : $($_.Exception.Message)" break } } } |