<#
.SYNOPSIS
	Checks the ping latency 
.DESCRIPTION
	This PowerShell script checks the ping latency from the local computer to some Internet hosts.
.PARAMETER hosts
	Specifies the hosts to check, seperated by comma (default is: amazon.com,bing.com,cnn.com,dropbox.com,facebook.com,google.com,live.com,twitter.com,youtube.com)
.EXAMPLE
	PS> ./check-ping
	✅ Ping is 25ms average, 13ms min, 109ms max
.LINK
	https://github.com/fleschutz/PowerShell
.NOTES
	Author: Markus Fleschutz | License: CC0
#>

param([string]$hosts = "amazon.com,bing.com,cnn.com,dropbox.com,facebook.com,google.com,live.com,twitter.com,youtube.com")

try {
	Write-Progress "⏳ (1/2) Pinging $hosts..."
	$HostsArray = $hosts.Split(",")
	$Pings = Test-Connection -count 1 -computerName $HostsArray

	Write-Progress "⏳ (2/2) Calculating results..."
	[int]$Min = 9999999
	[int]$Max = [int]$Avg = 0
	foreach($Ping in $Pings) {
		if ($IsLinux) {	[int]$Latency = $Ping.latency } else { [int]$Latency = $Ping.ResponseTime }
		if ($Latency -lt $Min) { $Min = $Latency }
		if ($Latency -gt $Max) { $Max = $Latency }
		$Avg += $Latency
	}
	$Avg /= $Pings.count

	Write-Progress -Completed " "
	"✅ Ping is $($Avg)ms average, $($Min)ms min, $($Max)ms max"
	exit 0 # success
} catch {
	"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
	exit 1
}