首页/系统/Windows 运维速查/Test-NetConnection 连通性测试

Test-NetConnection 连通性测试

PowerShell 综合连通测试:DNS 解析、ICMP、TCP 端口与路由追踪一体,替代多个传统命令。

Windows 运维速查系统更新于 2026-10-13

Test-NetConnection 是什么

Test-NetConnection(别名 tnc)是 PowerShell 里的综合连通性测试命令,把过去要分几步做的事合并到一条命令里:解析目标名称、发送 ICMP 探测、对指定端口做 TCP 握手、在详细模式下还给出选路与所用网卡。它的价值在于把「能否到达」和「端口能否连上」两个判断放在一次输出里,减少反复切换工具的麻烦。返回结果是对象而不是文本,判断字段就能直接驱动脚本分支,这一点比 ping 与手动端口测试更适合自动化。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7 及以上(在 Windows 上运行)
语法Test-NetConnection [[-ComputerName] <目标>] [-Port <端口>] [-InformationLevel Quiet|Detailed] [-CommonTCPPort <名称>]
别名tnc
返回类型PSCustomObject,含 PingSucceeded、TcpTestSucceeded 等布尔字段
默认行为不指定端口时默认对 80 端口做 TCP 测试并附带 ICMP 探测
权限普通用户即可;读取详细路由信息在部分受限环境可能受限

典型使用场景

  • 确认目标主机在线并顺带验证常用端口是否开放
  • 排查「服务连不上」:区分是主机不可达还是端口未监听
  • 自动化脚本前置检查:把端口探测结果作为分支条件决定后续动作
  • 验证 DNS 解析结果是否与预期地址一致
  • 多网卡机器上确认出站流量走了哪张网卡、经过哪个网关
  • 用详细模式获取路由信息,辅助判断是否误走了 VPN 或代理

常用示例

常用示例
# 基础连通性:ICMP 加默认 80 端口测试
Test-NetConnection 10.0.0.8
# 指定端口测试,这是最常用的形式
Test-NetConnection db01 -Port 5432
# 别名写法,交互时更省事
tnc web01 -Port 445
# 详细模式:带路由与所用网卡信息
Test-NetConnection 10.0.0.8 -InformationLevel Detailed
# 自动化判断:只关心布尔结果
if ((Test-NetConnection web01 -Port 443).TcpTestSucceeded) { '服务可达' } else { '端口不通' }
# 本机自测:验证服务是否在本机监听
Test-NetConnection 127.0.0.1 -Port 8080

参数与返回字段

项含义怎么用
-ComputerName目标主机名或 IP 地址可省略,省略时结合端口做本机自测
-Port要测试的 TCP 端口不指定时默认探测 80 端口
-InformationLevel输出详细程度,Quiet 只给布尔,Detailed 附路由与网卡自动化里用 Quiet 便于判断
PingSucceededICMP 是否收到应答为假不一定不可达,ICMP 常被策略屏蔽
TcpTestSucceededTCP 握手是否成功服务可达性的关键依据
RemoteAddress解析出的目标地址用于核对解析结果是否符合预期
InterfaceAlias本机出站使用的网卡多网卡环境判断流量从哪张卡出去
Route详细模式下的选路信息确认是否走了 VPN 或异常网关

结果组合判读

ICMPTCP 端口结论
通通主机与服务都可达,问题多半在应用层
通不通主机在线,但端口未监听或被防火墙拦截
不通通主机屏蔽 ICMP,但服务正常,属常见现象
不通不通主机可能下线、网络不可达或全量被拦,需分段定位
判断服务是否可达要看 TcpTestSucceeded,而不是看 PingSucceeded:云平台与安全加固后的主机普遍屏蔽 ICMP,只凭 ICMP 结果会把正常服务误判成故障。
本机自测与远程测试结果不一致时,优先怀疑监听地址:服务只绑在环回地址上,本地能连、远程连不上;只绑在指定网卡上,换一张网卡也不通。
端口探测的两种失败表现要分开看:立即返回连接被拒绝,说明对端有应答但端口没在监听;一直等到超时,多半是路径上的防火墙把包丢了。前者查服务列表,后者查策略与路由。

易错点

  • 只看 PingSucceeded 就下结论:大量主机默认禁 ICMP,此时 TcpTestSucceeded 才是有效依据
  • 不指定 -Port 就以为测了业务端口:默认只测 80,测数据库、远程桌面等端口必须显式加参数
  • 把 TCP 握手成功当成服务可用:握手只证明端口在监听,TLS 证书错误、应用报错仍需实际请求验证
  • 在脚本里用输出文本做判断:应直接取 TcpTestSucceeded 等属性,文本形式会随版本与语言变化
  • 在网络受限环境里频繁调用详细模式:会额外产生名称解析与路由查询,大批量探测时明显拖慢速度

数据来源与参考

  • Microsoft Learn:Test-NetConnection

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌