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 端口的短板。
完整语法
-
基础ICMP+DNS测试(不带端口)
Test-NetConnection [[-ComputerName]] [-TraceRoute] [-Hops ] [-InformationLevel {Quiet|Detailed}] -
指定TCP端口测试(最常用)
Test-NetConnection [[-ComputerName]] -Port [-InformationLevel {Quiet|Detailed}] -
预定义常用服务端口
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 访问目标 |
常用实例
-
基础ping+DNS解析(默认)
Test-NetConnection baidu.com -
测试443端口(HTTPS,运维高频)
Test-NetConnection baidu.com -Port 443 -
直接用内置服务别名,测RDP 3389
Test-NetConnection 192.168.1.100 -CommonTCPPort RDP -
路由追踪(替代tracert)
Test-NetConnection 8.8.8.8 -TraceRoute -
脚本用静默模式,直接拿布尔值
写法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 -
详细诊断输出
Test-NetConnection dbserver -Port 1433 -InformationLevel Detailed
posted on
浙公网安备 33010602011771号