Test-Connection

Wysyła ping (ICMP) do jednego lub wielu komputerów.

Test-Connection to powershellowy odpowiednik klasycznego ping, tyle że wyplu­wa nie tekst, a normalne obiekty, które możesz filtrować, sortować i wciskać do skryptów. Wysyła pakiety ICMP echo do jednego lub wielu komputerów i mówi Ci, czy host odpowiada i jak szybko. W praktyce używasz go, gdy chcesz sprawdzić dostępność serwera, przetestować całą listę maszyn naraz albo w pętli monitorować, kiedy zresetowany host wróci do życia — bez ręcznego klepania ping w kółko.

Składnia i najważniejsze opcje

Podstawowa forma to Test-Connection [-TargetName] [-Count ]. W Windows PowerShell 5.1 głównym parametrem jest -ComputerName; w PowerShell 7 nazwano go -TargetName, ale -ComputerName działa dalej jako alias.

  • -TargetName — jeden lub wiele hostów (nazwy albo IP), oddzielone przecinkami. To parametr pozycyjny, więc często piszesz go bez nazwy.
  • -Count — ile pakietów wysłać. Domyślnie 4 (czyli inaczej niż linuxowy ping, który leci w nieskończoność).
  • -Quiet — zwraca zamiast obiektów samo $true / $false. Idealne do if.
  • -TcpPort — zamiast ICMP próbuje otworzyć połączenie TCP na wskazanym porcie (PowerShell 6+). Ratuje, gdy firewall blokuje pingi.
  • -Traceroute — mapuje trasę do celu, jak tracert (PowerShell 6+).
  • -Delay — odstęp w sekundach między kolejnymi pingami.
  • -IPv4 / -IPv6 — wymusza konkretny protokół, gdy host ma oba adresy.

Przykłady użycia

  • Test-Connection google.com — cztery pingi do hosta i pełne obiekty z czasami odpowiedzi.
  • Test-Connection -TargetName 8.8.8.8 -Count 2 — tylko dwa pakiety, gdy nie chce Ci się czekać.
  • if (Test-Connection serwer01 -Count 1 -Quiet) { "żyje" } else { "leży" } — szybki test tak/nie w warunku.
  • Test-Connection srv1, srv2, srv3 -Count 1 — sprawdza całą listę maszyn jednym poleceniem.
  • Test-Connection intranet.local -TcpPort 443 — pukanie w port 443, gdy administrator wyłączył ICMP.

Częste błędy i pułapki

Najczęstsza wpadka to mylenie Test-Connection z Test-NetConnection — to dwa różne cmdlety. Ten drugi (z modułu NetTCPIP) ma -Port i bogatszą diagnostykę, ale nie przyjmuje listy hostów. Druga pułapka: w PowerShell 5.1 nie ma -TcpPort ani -Traceroute — jeśli skrypt ma działać na starym Windowsie, tych flag nie użyjesz. Pamiętaj też, że brak odpowiedzi nie zawsze znaczy „host padł” — ICMP bywa zablokowane przez firewall, a maszyna działa normalnie; wtedy przechodź na test TCP. I nie licz na to, że domyślnie leci nieskończoność jak w Linuksie — tu zatrzyma się po czterech pakietach.

Powiązane komendy: Test-NetConnection, ping, tracert, Resolve-DnsName, Test-WSMan.