Test-NetConnection ist nett um einen Port zu überprüfen, etwas schneller ist der Test über Net.Sockets.TcpClient.
Hier ein Beispiel um die ersten 1024 Ports der IP-Adresse 192.168.1.1 zu scannen:
1..1024 | % {write-host ((new-object Net.Sockets.TcpClient).Connect("192.168.1.1",$_)) "Port $_ ist offen"} 2>$null
PS C:\Scripts> 1..1024 | % {write-host ((new-object Net.Sockets.TcpClient).Connect("192.168.1.1",$_)) "Port $_ ist offen"} 2>$null Port 22 ist offen Port 25 ist offen Port 53 ist offen Port 80 ist offen ...
Wer die Befehltszeile getestet hat wird feststellen, dass die Überprüfung extrem langsam ist, dabei werden in dem Beispiel von den möglichen 65535 Ports gerade mal 1024 gescannt. Das liegt daran, dass ein Port nach dem anderen getestet wird.