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." } } |