25 lines
1.2 KiB
PowerShell
25 lines
1.2 KiB
PowerShell
param([ValidateSet('production', 'demo')][string]$Mode = 'production')
|
|
. (Join-Path $PSScriptRoot 'sense-common.ps1')
|
|
|
|
try {
|
|
$root = Get-SensePackageRoot
|
|
$configName = if ($Mode -eq 'demo') { 'sense.demo.env' } else { 'sense.env' }
|
|
$config = Join-Path $root "config\$configName"
|
|
Import-SenseEnvironment -Path $config
|
|
$port = [int](Get-SenseEnvironmentValue -Name 'SENSE_PORT' -Default '18080')
|
|
$connection = Get-NetTCPConnection -State Listen -LocalPort $port -ErrorAction SilentlyContinue | Select-Object -First 1
|
|
if (-not $connection) { Write-Host "Sense is not listening on port $port."; exit 0 }
|
|
$process = Get-CimInstance Win32_Process -Filter "ProcessId = $($connection.OwningProcess)"
|
|
$expected = [IO.Path]::GetFullPath((Join-Path $root 'sense.exe'))
|
|
if (-not $process -or [IO.Path]::GetFullPath($process.ExecutablePath) -ne $expected) {
|
|
throw "Port $port belongs to another process; it was not stopped."
|
|
}
|
|
& taskkill.exe /PID $process.ProcessId /T /F | Out-Null
|
|
if ($LASTEXITCODE -ne 0) { throw 'Failed to stop the Sense process tree.' }
|
|
Write-Host 'Sense and its managed child processes were stopped.'
|
|
exit 0
|
|
} catch {
|
|
Write-Error $_.Exception.Message
|
|
exit 1
|
|
}
|