Jak w PowerShellu sprawdzić czy port jest otwarty

Konfigurując usługę sieciową lub rozwiązując problem z jej dostępnością warto sprawdzić czy odpowiednie porty są otwarte i dostępne z poziomu sieci LAN bądź WAN. Pod Windows przez długi czas wykorzystywano w tym celu polecenie telnet, ale PowerShell oferuje bardziej rozbudowane rozwiązanie.

Chesz przetestować działanie poniższych instrukcji, a nie masz dostępu do serwera Linuxowego? Po rejestacji na DigitalOcean otrzymasz 100 dolarów do wykorzystania w ciągu 60 dni, a z przyjaznym interfejsem uruchomisz ulubioną dystrybucję w ciągu paru minut.

Podłączenie do konkretnego portu realizuje się za pomocą polecenia Test-NetConnection z parametrami -RemoteAddress oraz -RemotePort.

I tak chcąc, na przykład, sprawdzić czy serwer pod adresem wp.pl nasłuchuje na porcie 80 wystarczy skorzystać z poniższego polecenia.

PS C:\> Test-NetConnection -RemoteAddress wp.pl -RemotePort 80

ComputerName     : wp.pl
RemoteAddress    : 212.77.98.9
RemotePort       : 80
InterfaceAlias   : Ethernet
SourceAddress    : 192.168.0.104
TcpTestSucceeded : True

PS C:\>

Chcąc sprawdzić dostępność wielu serwerów (na przykład wp.pl oraz onet.pl) można skorzystać z nieco bardziej rozbudowanej wersji skryptu. Wpierw deklarowana jest tablica z adresami serwerów, a następnie jej wartości są pojedynczo przekazywane do polecenia Test-NetConnection.

$servers = @(wp.pl, onet.pl)

$servers | ForEach-Object { Test-NetConnection -RemoteAddress $_ -RemotePort 80 }

ComputerName     : wp.pl
RemoteAddress    : 212.77.98.9
RemotePort       : 80
InterfaceAlias   : Ethernet
SourceAddress    : 192.168.0.104
TcpTestSucceeded : True

ComputerName     : onet.pl
RemoteAddress    : 213.180.141.140
RemotePort       : 80
InterfaceAlias   : Ethernet
SourceAddress    : 192.168.0.104
TcpTestSucceeded : True

PS C:\>