diff --git a/scripts/ping-host.ps1 b/scripts/ping-host.ps1 index 73cc30a1..13bd3093 100755 --- a/scripts/ping-host.ps1 +++ b/scripts/ping-host.ps1 @@ -1,75 +1,40 @@ <# .SYNOPSIS - Ping a host + Pings a host .DESCRIPTION - This PowerShell script pings the given host continously and shows the roundtrip times in a horizontal chart. + This PowerShell script pings the given host. .PARAMETER hostname - Specifies the hostname or IP address of the host to ping (windows.com by default) -.PARAMETER timeInterval - Specifies the time interval in milliseconds to repeat the ping (1000 by default) + Specifies the hostname or IP address to ping (windows.com by default) .EXAMPLE - PS> ./ping-host.ps1 - ----------------------------------------- - Ping Roundtrip Times to windows.com - ----------------------------------------- - #1 ██████████████ 136ms - #2 ████████████████ 154ms - #3 █████████████████████████ 234ms - ... + PS> ./ping-host.ps1 x.com + ✅ x.com is up with 10ms latency. .LINK https://github.com/fleschutz/PowerShell .NOTES Author: Markus Fleschutz | License: CC0 #> -param([string]$hostname = "windows.com", [int]$timeInterval = 1000) +param([string]$hostname = "windows.com") function GetPingLatency([string]$hostname) { $hostsArray = $hostname.Split(",") $tasks = $hostsArray | foreach { - (New-Object Net.NetworkInformation.Ping).SendPingAsync($_,1000) + (New-Object Net.NetworkInformation.Ping).SendPingAsync($_,1500) } [Threading.Tasks.Task]::WaitAll($tasks) foreach($ping in $tasks.Result) { if ($ping.Status -eq "Success") { return $ping.RoundtripTime } } - return 1000 -} - -function WriteChartLine { param([float]$value, [float]$maxValue, [string]$text) - $num = ($value * 108.0) / $maxValue - while ($num -ge 1.0) { - Write-Host -noNewLine "█" - $num -= 1.0 - } - if ($num -ge 0.875) { - Write-Host -noNewLine "▉" - } elseif ($num -ge 0.75) { - Write-Host -noNewLine "▊" - } elseif ($num -ge 0.625) { - Write-Host -noNewLine "▋" - } elseif ($num -ge 0.5) { - Write-Host -noNewLine "▌" - } elseif ($num -ge 0.375) { - Write-Host -noNewLine "▍" - } elseif ($num -ge 0.25) { - Write-Host -noNewLine "▎" - } elseif ($num -ge 0.125) { - Write-Host -noNewLine "▏" - } - Write-Host " $text" + return 1500 } try { - Write-Host "`n PING ROUNDTRIP TIMES TO: $hostname" -foregroundColor green - [int]$count = 1 - do { - [float]$latency = GetPingLatency $hostname - Write-Host "#$count " -noNewline - WriteChartLine $latency 1000.0 "$($latency)ms" - Start-Sleep -Milliseconds $timeInterval - $count++ - } while($true) + [int]$latency = GetPingLatency($hostname) + if ($latency -eq 1500) { + Write-Host "⚠️ Host '$hostname' is offline" + } else { + Write-Host "✅ $hostname is up with $($latency)ms ping latency." + } exit 0 # success } catch { "⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"