diff --git a/Scripts/check-ping.ps1 b/Scripts/check-ping.ps1 index ae677665..e9252143 100755 --- a/Scripts/check-ping.ps1 +++ b/Scripts/check-ping.ps1 @@ -2,12 +2,12 @@ .SYNOPSIS Checks the ping latency .DESCRIPTION - This PowerShell script checks the ping latency from the local computer to 10 popular hosts. + This PowerShell script measures the ping roundtrip times from the local computer to 10 Internet servers. .PARAMETER hosts Specifies the hosts to check, seperated by commata (default is: amazon.com,bing.com,cnn.com,dropbox.com,facebook.com,github.com,google.com,live.com,twitter.com,youtube.com) .EXAMPLE PS> ./check-ping - ✅ Ping latency is 13ms...109ms with 29ms average (0 loss) + ✅ Ping latency is 29ms average (13ms...109ms, 0 loss) .LINK https://github.com/fleschutz/PowerShell .NOTES @@ -18,27 +18,26 @@ param([string]$hosts = "amazon.com,bing.com,cnn.com,dropbox.com,facebook.com,git try { Write-Host "✅ Ping latency is" -noNewline - $HostsArray = $hosts.Split(",") - - $t = $HostsArray | foreach { + $hostsArray = $hosts.Split(",") + $t = $hostsArray | foreach { (New-Object Net.NetworkInformation.Ping).SendPingAsync($_, 250) } [Threading.Tasks.Task]::WaitAll($t) - [int]$Min = 9999999 - [int]$Max = [int]$Avg = [int]$SuccessCount = [int]$LossCount = 0 + [int]$min = 9999999 + [int]$max = [int]$avg = [int]$successCount = [int]$lossCount = 0 foreach($ping in $t.Result) { if ($ping.Status -eq "Success") { - [int]$Latency = $ping.RoundtripTime - if ($Latency -lt $Min) { $Min = $Latency } - if ($Latency -gt $Max) { $Max = $Latency } - $Avg += $Latency - $SuccessCount++ + [int]$latency = $ping.RoundtripTime + if ($latency -lt $min) { $min = $Latency } + if ($latency -gt $max) { $max = $Latency } + $avg += $latency + $successCount++ } else { - $LossCount++ + $lossCount++ } } - $Avg /= $SuccessCount - Write-Host " $($Min)ms...$($Max)ms with $($Avg)ms average ($LossCount loss)" + $avg /= $successCount + Write-Host " $($avg)ms average ($($min)ms...$($max)ms, $lossCount loss)" exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"