skip to content

PowerShell
一键释放端口:PowerShell kport

背景

日常开发中经常遇到端口被占用的问题,比如启动某个服务时提示 EADDRINUSE。传统做法是手动三步走:

  1. 找到占用端口的进程 PID
  2. 结束该进程
  3. 重新启动服务

kport 将这三步合并成一条命令。

使用方法

kport 3000

也可以带参数名:

kport -Port 3000

输出示例:

Killed PID 12345 on port 3000

如果没有进程占用该端口,输出:

No process found on port 3000

安装步骤

1. 打开 PowerShell 配置文件

PowerShell 配置文件是一个脚本,每次启动 PowerShell 时都会自动执行。将自定义 function 放在这里,就可以随时使用。

首先检查配置文件是否存在:

Test-Path $PROFILE

如果返回 False,需要先创建:

New-Item -Path $PROFILE -ItemType File -Force

然后用 VS Code 打开(或其他编辑器):

code $PROFILE

2. 添加脚本

将以下代码粘贴到配置文件中,保存:

function kport {
  param([int]$Port)

  $proc = Get-NetTCPConnection -LocalPort $Port -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess

  if ($proc) {
    Stop-Process -Id $proc -Force
    Write-Host "Killed PID $proc on port $Port"
  } else {
    Write-Host "No process found on port $Port"
  }
}

3. 生效配置

重新加载配置文件,使新 function 立即可用:

. $PROFILE

或者直接重启 PowerShell 窗口。

脚本原理解析

  • Get-NetTCPConnection -LocalPort $Port:查询本地指定端口的 TCP 连接信息
  • Select-Object -ExpandProperty OwningProcess:提取 owning process 的 PID
  • Stop-Process -Id $proc -Force:强制终止进程,-Force 绕过确认提示
  • -ErrorAction SilentlyContinue:静默处理未找到端口的情况,避免报错

适用场景

  • 开发时频繁遇到端口占用需要手动释放
  • Docker 容器端口与本地端口冲突
  • 测试环境清理残留进程

平时手动 netstat + taskkill 的操作,有了 kport 一步到位。