## Specify URL to SpeedTest CLI app $URL = 'https://install.speedtest.net/app/cli/ookla-speedtest-1.0.0-win64.zip' ## Download the app from the URL $ZIPFILE = Download-File -URL $URL ## Setup the directory to extract the downloaded zip file to $WORKINGDIR = $ZIPFILE.Substring(0, $ZIPFILE.LastIndexOf('.')) If ( Test-Path $WORKINGDIR ) { LogMsg "Deleting existing directory: ""$WORKINGDIR""" Try { Remove-Item -Path $WORKINGDIR -Recurse -Force } Catch { LogErr $_.Exception.Message } } LogMsg "Creating new directory: ""$WORKINGDIR""" Try { New-Item -Path $WORKINGDIR -ItemType Directory -Force | Out-Null } Catch { LogErr $_.Exception.Message } ## Extract $ZIPFILE to $WORKINGDIR Try { Add-Type -Assembly System.IO.Compression.FileSystem [IO.Compression.ZipFile]::ExtractToDirectory($ZIPFILE, $WORKINGDIR) } Catch { LogErr $_.Exception.Message } ## Run the SpeedTest CLI app $SPEEDTEST = "${WORKINGDIR}\speedtest.exe" If ( Test-Path $SPEEDTEST ) { Try { $RESULTS = [string]( cmd.exe /c ""${SPEEDTEST} --accept-license --progress=no"" ) ## Cleanup the output If ( -not [string]::IsNullOrEmpty($RESULTS) ) { $RESULTS = $RESULTS -replace "Server: ", "`n`nServer: " $RESULTS = $RESULTS -replace "ISP: ", "`nISP: " $RESULTS = $RESULTS -replace "Latency: ", "`nLatency: " $RESULTS = $RESULTS -replace "Download: ", "`nDownload: " $RESULTS = $RESULTS -replace "Upload: ", "`nUpload: " $RESULTS = $RESULTS -replace "Packet Loss: ", "`nPacket Loss: " $RESULTS = $RESULTS -replace "Result URL: ", "`nResult URL: " $RESULTS = $RESULTS + "`n" } Else { $RESULTS = "The test did not product any output" } LogMsg $RESULTS } Catch { LogErr $_.Exception.Message } ## Wait 5 seconds before continuing so the test has a chance to start before it gets deleted Start-Sleep -Seconds 5 } Else { LogMsg "The file does not exist at the expected path: ""${SPEEDTEST}""" } ## Cleanup files and directories created by this script If ( Test-Path $ZIPFILE ) { LogMsg "Deleting downloaded zip file: ""$ZIPFILE""" Try { Remove-Item -Path $ZIPFILE -Force } Catch { LogErr $_.Exception.Message } } Else { LogMsg "Downloaded zip file no longer exists: ""$ZIPFILE""" } If ( Test-Path $WORKINGDIR ) { LogMsg "Deleting directory from extracted zip file: ""$WORKINGDIR""" Try { Remove-Item -Path $WORKINGDIR -Recurse -Force } Catch { LogErr $_.Exception.Message } } Else { LogMsg "Directory from extracted zip file no longer exists: ""$WORKINGDIR""" }