如何用PowerShell测试端口连通性?

时间:2026-04-16 编辑:wenzhang1

  在 Windows 系统中,使用 PowerShell 测试端口连通性,最推荐、最现代的方法是使用 Test-NetConnection 命令。它是 pingtelnet 的强大替代品,无需额外安装,且输出结果清晰明了。

   核心命令:Test-NetConnection

这个命令专为网络诊断设计,可以精确测试 TCP 端口的连通性。

1. 基础用法

打开 PowerShell,输入以下格式的命令:

Test-NetConnection -ComputerName <目标IP或域名> -Port <端口号>

示例: 测试百度(www.baidu.com)的 80 端口是否开放。

Test-NetConnection -ComputerName www.baidu.com -Port 80

2. 结果解读

执行后,你会看到类似下面的结构化输出,非常直观:

ComputerName           : www.baidu.com RemoteAddress          : 180.101.50.242 RemotePort             : 80 InterfaceAlias         : 以太网 SourceAddress          : 192.168.1.100 TcpTestSucceeded       : True

  • 关键看这一行:TcpTestSucceeded : True
    • True:表示端口开放且可达,网络连接正常。
    • False:表示端口关闭、被防火墙拦截或网络不通

3. 简洁模式 (Quiet)

如果你只需要一个“是/否”的答案(例如在脚本中),可以加上 -InformationLevel Quiet 参数,它只会返回 $True$False

Test-NetConnection -ComputerName 8.8.8.8 -Port 53 -InformationLevel Quiet


   进阶用法:一行命令搞定

如果你习惯在 CMD 中操作,或者想快速执行,可以直接通过 powershell 命令来调用它,无需切换窗口。

在 CMD 中执行:

powershell -Command "Test-NetConnection -ComputerName 10.0.130.24 -Port 443"

这会直接在当前窗口显示 PowerShell 的测试结果。


   备选方法:使用 .NET 类库

如果 Test-NetConnection 无法满足你的特殊需求(例如需要自定义超时时间),可以使用 PowerShell 调用底层的 .NET 类库来实现。

$tcpClient = New-Object System.Net.Sockets.TcpClient try {    # 尝试连接,例如连接 192.168.1.1 的 80 端口    $tcpClient.Connect("192.168.1.1", 80)    Write-Host "端口开放" -ForegroundColor Green } catch {    Write-Host "端口关闭或无法连接" -ForegroundColor Red } finally {    $tcpClient.Close() }

这种方法更灵活,适合编写更复杂的自动化脚本。

    为什么推荐 Test-NetConnection?

相比于传统的 telnetTest-NetConnection 优势明显:

特性Test-NetConnectionTelnet
结果清晰度,直接显示 True/False,连接成功是黑屏,容易误判
安装需求无需安装,系统自带需要手动开启 Windows 功能
功能性,可集成路由追踪、Ping测试,仅能测试TCP连接
脚本友好,输出为结构化对象,交互式工具

总而言之,Test-NetConnection 是在 Windows 上测试端口连通性的首选工具,简单、高效且功能强大。