This script was developed while building a Firebase app that had a local emulator run. Often, this emulator would freeze up and not close properly, so opening up a Task Manager (I used Process Hacker because it’s easier) and manually close the dangling java.exe process.

This became so common and disruptive that I created a little script to find and kill the process for me.

It’s not that big of a deal, but I gotta add content to this site, so why not…

Raw file available at https://powershell.xevion.dev/scripts/ForceClose.ps1


param (
    [Int32]$targetPort = "8080",
    [string]$processName = "java"
)

function Pluralize($value)
{
    if ($value -eq 1)
    {
        return ""
    }

    return "s"
}

$connections = Get-NetTCPConnection -state Listen -LocalPort $targetPort -ErrorAction 'SilentlyContinue'

if ($connections.Length -eq 0)
{
    Write-Host "No ports were open and listening on ${targetPort}"
    return
} else
{
    $processes = $connections | % { Get-Process -Id $_.OwningProcess } | ? { $_.Name -like $processName }
    $processCount = $processes.Length
    Write-Host "Closing ${processCount} process${processCount | Pluralize} open on ${targetPort}..."

    $processes |
            Stop-Process -Force -PassThru |
            select -Property Name, ProcessName, StartTime, HasExited, ExitTime |
            Format-List
}