diff --git a/speedtest.ps1 b/speedtest.ps1 new file mode 100644 index 0000000..59108d2 --- /dev/null +++ b/speedtest.ps1 @@ -0,0 +1,49 @@ +## Measures the speed of the download, can only be ran on a PC running Windows 10 or a server running Server 2016+, plan is to add uploading also +## Majority of this script has been copied/butchered from https://www.ramblingtechie.co.uk/2020/07/13/internet-speed-test-in-powershell/ +# MINIMUM ACCEPTED THRESHOLD IN mbps +$mindownloadspeed = 10 +$minuploadspeed = 0.5 + +# File to download you can find download links for other files here https://speedtest.flonix.net +$downloadurl = "http://services.am-networks.fr/jirafeau/f.php?h=1AJKnNts&d=1" +#$UploadURL = "http://ipv4.download.thinkbroadband.com/10MB.zip" + +# SIZE OF SPECIFIED FILE IN MB (adjust this to match the size of your file in MB as above) +$size = 20 +# Name of Downloaded file +$localfile = "SpeedTest.bin" + +# WEB CLIENT VARIABLES +$webclient = New-Object System.Net.WebClient + +#RUN DOWNLOAD & CALCULATE DOWNLOAD SPEED +$downloadstart_time = Get-Date +$webclient.DownloadFile($downloadurl, $localfile) +$downloadtimetaken = $((Get-Date).Subtract($downloadstart_time).Seconds) +$downloadspeed = ($size / $downloadtimetaken)*4 +Write-Output "Time taken: $downloadtimetaken second(s) | Download Speed: $downloadspeed mbps" + +#RUN UPLOAD & CALCULATE UPLOAD SPEED +#$uploadstart_time = Get-Date +#$webclient.UploadFile($UploadURL, $localfile) > $null; +#$uploadtimetaken = $((Get-Date).Subtract($uploadstart_time).Seconds) +#$uploadspeed = ($size / $uploadtimetaken) * 8 +#Write-Output "Time taken: $uploadtimetaken second(s) | Upload Speed: $uploadspeed mbps" + +#DELETE TEST DOWNLOAD FILE +Remove-Item -path $localfile + +#SEND ALERTS IF BELOW MINIMUM THRESHOLD +if ($downloadspeed -ge $mindownloadspeed) +{ +Write-Output "Speed is acceptable. Current download speed at is $downloadspeed mbps which is above the threshold of $mindownloadspeed mbps" +exit 0 +} + +else +{ +Write-Output "Current download speed at is $downloadspeed mbps which is below the minimum threshold of $mindownloadspeed mbps" +exit 1 +} + +Exit $LASTEXITCODE \ No newline at end of file