public/Remove-SpeedTestServer.ps1
function Remove-SpeedTestServer { <# .SYNOPSIS Removes iPerf3 server configuration from the local computer. .DESCRIPTION Removes iPerf3 server configuration from the local computer. This includes the iPerf3 package, firewall rules, and scheduled task. .EXAMPLE Remove-SpeedTestServer Decommissions the local iPerf3 server. #> [CmdletBinding()] Param () $timeout = 30 # Seconds if (!(Test-Administrator)) { throw "You are not running as administrator. Please re-run this function after opening PowerShell as administrator." } Write-Output "Decommissioning local iPerf3 server." # Remove scheduled task before stopping process to prevent auto-trigger Remove-iPerf3Task Write-Verbose -Message "Stopping iPerf3 process." try { Get-Process -Name 'iperf3' | Stop-Process } catch { Write-Verbose -Message "iPerf3 process not found - no action taken." } Remove-iPerf3Port Remove-iPerf3 $timeoutTimer = [Diagnostics.Stopwatch]::StartNew() $processTest = $false while ($timeoutTimer.Elapsed.TotalSeconds -lt $timeout) { $getProcessResult = Get-Process -Name 'iperf3' -ErrorAction 'SilentlyContinue' if (!$getProcessResult) { Write-Verbose -Message "iPerf3 process does not exist." $processTest = $true break } else { Start-Sleep -Seconds 3 } } $timeoutTimer.Stop() if (!($processTest)) { throw "iPerf3 process still running even though decommission was attempted. Timeout of $timeout seconds reached." } } |