Test-NetConnection

Diagnozuje połączenie sieciowe, w tym test portu TCP.

Test-NetConnection to powershellowy cmdlet do diagnostyki połączeń sieciowych na Windowsie. Robi to, po co dawniej odpalałeś kilka narzędzi naraz: pinguje host, sprawdza czy konkretny port TCP jest otwarty, pokazuje trasę pakietów i przy okazji zwraca dane o interfejsie oraz routingu. W praktyce jest to twój pierwszy odruch, gdy „coś się nie łączy” — zamiast zgadywać, czy problem leży w DNS, w firewallu, czy w martwej usłudze, jednym poleceniem dostajesz konkret. Alias, który zapamiętasz szybciej niż pełną nazwę, to tnc.

Składnia i najważniejsze opcje

Podstawowa forma: Test-NetConnection [-ComputerName] [-Port ]

  • -ComputerName — nazwa DNS lub adres IP hosta docelowego. Domyślnie internetbeacon.msedge.net, więc Test-NetConnection bez argumentów sprawdza po prostu, czy masz internet.
  • -Port — numer portu TCP do przetestowania. Kluczowa opcja: sprawdza, czy usługa faktycznie słucha, a nie tylko czy host żyje.
  • -CommonTCPPort — skrót dla popularnych usług, przyjmuje: HTTP, RDP, SMB, WINRM. Wygodne, gdy nie chce ci się pamiętać numerów.
  • -TraceRoute — uruchamia śledzenie trasy pakietów do hosta (odpowiednik tracert).
  • -Hops — ogranicza liczbę skoków w trace route, gdy nie chcesz czekać na pełną trasę.
  • -InformationLevel — poziom szczegółowości: Detailed (pełny raport) albo Quiet (zwraca tylko True/False), idealne do skryptów.

Przykłady użycia

  • Test-NetConnection google.com — najprostszy test: ping po ICMP plus rozwiązanie DNS i podgląd interfejsu, którym wyjdzie ruch.
  • Test-NetConnection sql01 -Port 1433 — sprawdza, czy port bazy SQL Server jest osiągalny. Pole TcpTestSucceeded mówi wprost: da się połączyć czy nie.
  • Test-NetConnection dc01 -CommonTCPPort WINRM — szybka weryfikacja, czy zdalne zarządzanie (port 5985) odpowiada, zanim odpalisz Invoke-Command.
  • Test-NetConnection 8.8.8.8 -TraceRoute — pokazuje kolejne skoki do celu, gdy podejrzewasz, że ruch gubi się gdzieś po drodze.
  • if (Test-NetConnection web01 -Port 443 -InformationLevel Quiet) { "OK" } — użycie w skrypcie: zwraca goły bool, więc wpina się prosto w if.

Częste błędy i pułapki

PingSucceeded: False nie znaczy, że host jest martwy. Wiele firewalli blokuje ICMP, więc ping może paść, a usługa na porcie działać bez zarzutu. Gdy testujesz port, patrz na TcpTestSucceeded, nie na wynik pinga.

To test tylko TCP. -Port nie sprawdzi usługi działającej na UDP (np. DNS czy SNMP) — dla nich Test-NetConnection się nie nada.

Wersja i system. Cmdlet pochodzi z modułu NetTCPIP i jest dostępny od Windows 8 / Server 2012 wzwyż. W PowerShell 7 na Linuksie czy macOS go nie ma — tam sięgnij po Test-Connection albo natywne narzędzia. Uważaj też, żeby nie mylić go z Test-Connection, które robi wyłącznie ping.

Powiązane komendy: Test-Connection, Resolve-DnsName, tracert, ping, Get-NetTCPConnection.