PowerShell 的好處是輸出不是一大段文字,而是可以篩選、排序與匯出的物件。排查時先用唯讀 Get/Test 指令;Set、New、Remove 類指令留到已確認變更範圍後再做。
介面與 IP 設定
查看所有網路設定摘要PowerShell
Get-NetIPConfiguration可同時看到介面、IP、gateway 與 DNS。
只看有預設閘道的介面PowerShell
Get-NetIPConfiguration | Where-Object IPv4DefaultGateway快速排除未連線或虛擬介面。
查看網卡狀態與連線速度PowerShell
Get-NetAdapter | Sort-Object Status, Name | Format-Table Name, Status, LinkSpeed, MacAddressLinkSpeed 是協商速率,不是實際上網速度。
查看 IP 位址PowerShell
Get-NetIPAddress | Sort-Object InterfaceAlias, AddressFamily可辨認 DHCP、手動與 link-local 位址。
查看預設路由PowerShell
Get-NetRoute -DestinationPrefix '0.0.0.0/0' | Sort-Object RouteMetric多條預設路由時還要考慮介面 metric。
查看 DNS 伺服器PowerShell
Get-DnsClientServerAddress | Where-Object ServerAddresses分介面列出 IPv4/IPv6 DNS。
查看 DNS suffixPowerShell
Get-DnsClient | Format-Table InterfaceAlias, ConnectionSpecificSuffix, RegisterThisConnectionsAddressAD 或內部名稱解析異常時很有用。
測試主機與 Port
測 TCP 443PowerShell
Test-NetConnection example.com -Port 443同時顯示解析 IP、來源位址與 TCP 測試結果。
測 SSH PortPowerShell
Test-NetConnection server.example.com -Port 22 -InformationLevel DetailedTCP 成功只代表該 port 可建立連線。
測 pingPowerShell
Test-Connection 192.168.1.1 -Count 10對方可能封鎖 ICMP,失敗不等同服務一定不通。
持續測試並保留時間PowerShell
1..20 | ForEach-Object { [pscustomobject]@{Time=Get-Date; OK=Test-Connection 192.168.1.1 -Count 1 -Quiet}; Start-Sleep 1 }適合抓短暫斷線;完成後可匯出 CSV。
追蹤路由PowerShell
Test-NetConnection example.com -TraceRoutePowerShell 版本與權限會影響輸出。
指定來源介面診斷PowerShell
Test-NetConnection example.com -DiagnoseRouting -InformationLevel Detailed用來查看路由選擇;不同 Windows 版本支援度需先看說明。
DNS 與連線狀態
查 A 紀錄PowerShell
Resolve-DnsName example.com -Type A預設使用該介面的 DNS 設定。
指定 DNS 伺服器PowerShell
Resolve-DnsName example.com -Server 1.1.1.1 -Type A內部名稱不要拿公用 DNS 測。
查 MX 紀錄PowerShell
Resolve-DnsName example.com -Type MX郵件問題還要檢查 SPF、DKIM、DMARC 與實際 SMTP。
查 TXT 紀錄PowerShell
Resolve-DnsName example.com -Type TXTTXT 可能很長,需查看完整 Strings。
查反向 DNSPowerShell
Resolve-DnsName 203.0.113.10 -Type PTR把測試 IP 換成實際位址。
查看已建立 TCP 連線PowerShell
Get-NetTCPConnection -State Established | Sort-Object RemoteAddress, RemotePort可再依 OwningProcess 找程序。
查某個本機 PortPowerShell
Get-NetTCPConnection -LocalPort 443 -ErrorAction SilentlyContinue沒有結果可能是未監聽、不同協定或權限不足。
由 PID 找程序PowerShell
Get-Process -Id 1234把 1234 換成 OwningProcess 的值。
匯出網路現況PowerShell
Get-NetIPConfiguration -Detailed | Out-File .\network-snapshot.txt -Encoding utf8變更前留一份快照,檔案可能含內網資訊。
怎麼確認有做對
- 確認 Test-NetConnection 的 RemoteAddress、SourceAddress 與 TcpTestSucceeded。
- DNS 結果比較系統預設 DNS 與指定 DNS,不只看有沒有答案。
- 變更後重新抓一次設定快照並比對。
常見錯誤
- 只看 LinkSpeed 就判斷 ISP 頻寬。
- 忽略 VPN、Hyper-V、WSL 等虛擬介面造成的路由差異。
- 把 TCP port 成功當成應用登入或 TLS 一定正常。
- 直接套用網路變更而沒有回復命令。
版本與官方文件
參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。