Test-Connection和ping 都是发送ICMP Echo Request(ping包),用来检查主机时候否可达,延迟,丢包。
同点:

  • cmd ping:Windows 默认 4 个包
  • PowerShell Test-Connection 默认也是 4 个包,用 -Count 修改

不同点:

  • ping.exe:输出纯文本,脚本里要抓字符串解析。

  • Test-Connection:返回对象 (PingStatus),可以直接取属性:ResponseTime、Address、StatusCode,方便 PowerShell 脚本管道处理。

  • -Quiet 参数:直接返回布尔值 $true/$false,写 if 判断非常方便:

    if(Test-Connection baidu.com -Quiet -Count 1){
    Write-Host 通了
    }

  • Test-Connection -Quiet:只要 4 个包中有 1 个成功就返回 $true,不是全部成功才 true。

Test-NetConnection 简写tnc 是用于ICMP + TCP 端口测试
一句话定位:ICMP ping + DNS 解析 + TCP 端口连通性 + tracert 路由追踪 一体化诊断工具,弥补 Test-Connection 不能测 TCP 端口的短板。

完整语法

  1. 基础ICMP+DNS测试(不带端口)
    Test-NetConnection [[-ComputerName] ] [-TraceRoute] [-Hops ] [-InformationLevel {Quiet|Detailed}]

  2. 指定TCP端口测试(最常用)
    Test-NetConnection [[-ComputerName] ] -Port [-InformationLevel {Quiet|Detailed}]

  3. 预定义常用服务端口
    Test-NetConnection [[-ComputerName] ] -CommonTCPPort

参数表格

参数 说明
-ComputerName 目标 IP / 域名,位置参数,可直接写在命令后不用写参数名
-Port 测试 TCP 端口,做完整 TCP 三次握手,判断端口通不通
-CommonTCPPort 内置别名:HTTP (80)、RDP (3389)、SMB (445)、WINRM (5985)
-TraceRoute 路由追踪,等价 tracert,显示每一跳路由
-Hops 最大跳数,默认 30
-InformationLevel Quiet 静默模式,返回布尔 $true/$false,适合脚本 if 判断
-InformationLevel Detailed 输出完整详细诊断信息
-DiagnoseRouting 路由选路诊断,查看本机选哪块网卡、哪个源 IP 访问目标

常用实例

  1. 基础ping+DNS解析(默认)
    Test-NetConnection baidu.com

  2. 测试443端口(HTTPS,运维高频)
    Test-NetConnection baidu.com -Port 443

  3. 直接用内置服务别名,测RDP 3389
    Test-NetConnection 192.168.1.100 -CommonTCPPort RDP

  4. 路由追踪(替代tracert)
    Test-NetConnection 8.8.8.8 -TraceRoute

  5. 脚本用静默模式,直接拿布尔值
    写法1
    if(Test-NetConnection 192.168.1.1 -Port 22 -InformationLevel Quiet){
    Write-Host "22端口开放"
    }
    写法2,直接读取TcpTestSucceeded属性(更稳,部分版本Quiet有坑)
    (Test-NetConnection 192.168.1.1 -Port 22 -WarningAction SilentlyContinue).TcpTestSucceeded

  6. 详细诊断输出
    Test-NetConnection dbserver -Port 1433 -InformationLevel Detailed

 posted on 2026-09-28 14:16  路边一菜贩  阅读(21)  评论(0)    收藏  举报