PowerShell 技能连载 - 网络诊断与排查
适用于 PowerShell 5.1 及以上版本
网络故障是运维工作中最常见的排障场景——“连不上数据库”、”网站打不开”、”文件共享超时”。PowerShell 内置了丰富的网络诊断命令,从基本的 ping、端口检测到 DNS 解析、路由追踪和 TCP 连接测试,可以快速定位网络问题的层级(物理层、链路层、网络层、传输层、应用层)。
本文将讲解 PowerShell 网络诊断的系统化方法,以及如何构建一键式排障脚本。
基础连通性测试
1 | # Test-Connection(PowerShell 的 ping) |
执行结果示例:
1 | Address 延迟ms Status |
DNS 诊断
DNS 解析问题是网络故障的高发区:
1 | # DNS 解析 |
执行结果示例:
1 | Name Type Section Data |
TCP 端口扫描
1 | function Test-TcpPort { |
执行结果示例:
1 | Port Service Status |
构建一键式排障脚本
1 | function Invoke-NetworkTroubleshooter { |
执行结果示例:
1 | ========== 网络排障:blog.vichamp.com ========== |
注意事项
- 防火墙影响:ICMP ping 被阻止不代表服务不可用,始终结合 TCP 端口测试判断
- DNS 缓存:排查 DNS 问题时先执行
Clear-DnsClientCache清除缓存 - 超时设置:给网络测试设置合理的超时,避免脚本无限等待
- IPv4/IPv6:某些环境可能有 IPv6 相关问题,使用
-AddressFamily IPv4强制使用 IPv4 - 权限要求:部分网络诊断命令(如路由追踪)需要管理员权限
- 安全合规:端口扫描功能仅用于授权的网络诊断和安全审计,不得用于未授权的扫描
PowerShell 技能连载 - 网络诊断与排查
http://blog.vichamp.com/2025/06/06/powershell-network-diagnostics/