[CmdletBinding(SupportsShouldProcess)] param([string]$TaskName = 'AIGame-AIServer', [switch]$UninstallTask) $ErrorActionPreference = 'Stop' $expected = [IO.Path]::GetFullPath((Join-Path $PSScriptRoot 'aiserver.exe')) if ($PSCmdlet.ShouldProcess($expected, 'Stop this release and its startup task')) { $task = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue if ($task) { Stop-ScheduledTask -TaskName $TaskName if ($UninstallTask) { Unregister-ScheduledTask -TaskName $TaskName -Confirm:$false } } Get-CimInstance Win32_Process -Filter "Name='aiserver.exe'" | Where-Object { $_.ExecutablePath -and [IO.Path]::GetFullPath($_.ExecutablePath) -eq $expected } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force } Write-Output 'Stopped. Database and logs preserved.' }