# 查询是否被其他应用占用

在管理员下的 powershell(2202 年了,也该学一下 powershell 了):

# 管理员不是必需,但不用管理员可能看不到其他用户的进程?
netstat -ano | Select-String "8080"

查询结果

11284 是 Process ID,可以直接 kill 掉,也可以看看是什么。

ps -PID 11284
kill 11284

查询结果

# 查询是否被 Hyper-V 占用

以前的 Windows 在上面一步基本就能结束了,但现在是 2202 年,Docker 和 WSL 2 大行其道,干开发的应该都用着 Hyper-V。

而 Hyper-V 会保留一些端口,其他应用就不能占用了。

使用下面这行命令查询 Hyper-V 占用的端口:

netsh interface ipv4 show excludedportrange protocol=tcp

查询 Hyper-V 占用的端口

图上没有 * 的就是 Hyper-V 占用的端口。而加了 *Administered port exclusions 就是我们保留的端口, Hyper-V 不会再占用。

如何保留端口呢?在管理员下的 powershell 使用下面这行命令:

# 保留 7962 开始的 100 个端口(即 7962-8061)
netsh int ipv4 delete excludedportrange protocol=tcp startport=7962 numberofports=100

7962-8061 已为我们保留

如果执行的时候遇到 netsh error: The process cannot access the file because it is being used by another process,可以尝试重启电脑,或者关掉 Hyper-V、重启、保留完端口再打开 Hyper-V、重启。

# 关掉 Hyper-V
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
# 开启 Hyper-V
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

Reference: