Update check-ping.ps1

This commit is contained in:
Markus Fleschutz 2023-08-21 16:53:43 +02:00
parent fae1922ce8
commit ce017becfb

View File

@ -2,33 +2,34 @@
.SYNOPSIS .SYNOPSIS
Checks the ping latency Checks the ping latency
.DESCRIPTION .DESCRIPTION
This PowerShell script measures the ping roundtrip times from the local computer to 10 Internet servers. This PowerShell script measures the ping roundtrip times from the local computer to other computers (10 Internet servers by default).
.PARAMETER hosts .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) Specifies the hosts to check, seperated by commata (default is: amazon.com,bing.com,cnn.com,dropbox.com,github.com,google.com,live.com,meta.com,x.com,youtube.com)
.EXAMPLE .EXAMPLE
PS> ./check-ping.ps1 PS> ./check-ping.ps1
Ping latency is 29ms average (13ms...109ms, 0 loss) Ping latency is 29ms average (13ms...109ms, 0/10 loss)
.LINK .LINK
https://github.com/fleschutz/PowerShell https://github.com/fleschutz/PowerShell
.NOTES .NOTES
Author: Markus Fleschutz | License: CC0 Author: Markus Fleschutz | License: CC0
#> #>
param([string]$hosts = "amazon.com,bing.com,cnn.com,dropbox.com,facebook.com,github.com,google.com,live.com,twitter.com,youtube.com") param([string]$hosts = "bing.com,cnn.com,dropbox.com,github.com,google.com,ibm.com,live.com,meta.com,x.com,youtube.com")
try { try {
$hostsArray = $hosts.Split(",") $hostsArray = $hosts.Split(",")
$t = $hostsArray | foreach { $parallelTasks = $hostsArray | foreach {
(New-Object Net.NetworkInformation.Ping).SendPingAsync($_, 500) (New-Object Net.NetworkInformation.Ping).SendPingAsync($_, 500)
} }
[Threading.Tasks.Task]::WaitAll($t)
[int]$min = 9999999 [int]$min = 9999999
[int]$max = [int]$avg = [int]$successCount = [int]$lossCount = 0 [int]$max = [int]$avg = [int]$successCount = [int]$lossCount = 0
foreach($ping in $t.Result) { [int]$totalCount = $hostsArray.Count
[Threading.Tasks.Task]::WaitAll($parallelTasks)
foreach($ping in $parallelTasks.Result) {
if ($ping.Status -eq "Success") { if ($ping.Status -eq "Success") {
[int]$latency = $ping.RoundtripTime [int]$latency = $ping.RoundtripTime
if ($latency -lt $min) { $min = $Latency } if ($latency -lt $min) { $min = $latency }
if ($latency -gt $max) { $max = $Latency } if ($latency -gt $max) { $max = $latency }
$avg += $latency $avg += $latency
$successCount++ $successCount++
} else { } else {
@ -36,10 +37,10 @@ try {
} }
} }
if ($successCount -eq 0) { if ($successCount -eq 0) {
Write-Host "⚠️ Offline ($lossCount/$lossCount loss)" Write-Host "⚠️ Offline ($lossCount/$totalCount loss)"
} else { } else {
$avg /= $successCount $avg /= $successCount
Write-Host "✅ Ping latency is $($avg)ms average ($($min)ms...$($max)ms, $lossCount loss)" Write-Host "✅ Ping latency is $($avg)ms average ($($min)ms...$($max)ms, $lossCount/$totalCount loss)"
} }
exit 0 # success exit 0 # success
} catch { } catch {