技術文章 · IT 指令工具箱

PowerShell 網路指令:測 Port、查 IP、DNS、路由與連線

整理 Get-NetIPConfiguration、Test-NetConnection、Resolve-DnsName、Get-NetTCPConnection、Get-NetAdapter 與 PowerShell 網路排查指令。

作者 Steve Chen · 發布  · 約 6 分鐘閱讀

IT 指令工具箱 — 廷皓技術專欄插圖

PowerShell 的好處是輸出不是一大段文字,而是可以篩選、排序與匯出的物件。排查時先用唯讀 Get/Test 指令;Set、New、Remove 類指令留到已確認變更範圍後再做。

22 組範例Windows PowerShell 5.1PowerShell 7Windows 10/11/Server查核日期:2026-08-11
動手前:固定 IP、DNS 與防火牆變更可能讓遠端連線立即中斷。正式環境先記錄介面別名、現況與回復命令。

介面與 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, MacAddress

LinkSpeed 是協商速率,不是實際上網速度。

查看 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, RegisterThisConnectionsAddress

AD 或內部名稱解析異常時很有用。

測試主機與 Port

測 TCP 443PowerShell

Test-NetConnection example.com -Port 443

同時顯示解析 IP、來源位址與 TCP 測試結果。

測 SSH PortPowerShell

Test-NetConnection server.example.com -Port 22 -InformationLevel Detailed

TCP 成功只代表該 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 -TraceRoute

PowerShell 版本與權限會影響輸出。

指定來源介面診斷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 TXT

TXT 可能很長,需查看完整 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 或系統內建說明確認,再以當版官方文件為準。

聯絡廷皓討論 看更多文章