Neulich stand ich vor dem Problem, dass der Internet Provider ein paar Ports blockte und ich herausfinden musste, welche es genau sind. Hierfür bietet sich der Powershell Befehl Test-NetConnection an, bei dem man eine IP und einen Port angeben kann. Weiters benötigt man eine Webseite, bei der die Ports offen sind – Hierbei kann man open.zorinaq.com verwenden.

Mit folgenden Skript werden alle Ports von 1 bis 65.535 geprüft und die, bei denen keine Connection hergestellt werden konnte ausgegeben.

$machine = 'open.zorinaq.com'

for ($i=1; $i -lt 65536; $i++)
{
    $port = $i
    $ret = (Test-NetConnection $machine -port $port).TcpTestSucceeded
    if ($ret -eq $false)
    {
        Write-Host $port ":" $ret
    }
}

Will man nicht soviele Ports prüfen, sondern nur eine eingeschränkte Reihe von Ports.

$machine = 'open.zorinaq.com'
$port_arr = @(8331, 8332, 8333, 8334, 8335, 8310, 8311)

foreach ($port in $port_arr)
{
    $ret = (Test-NetConnection $machine -port $port).TcpTestSucceeded
    if ($ret -eq $false)
    {
        Write-Host $port ":" $ret
    }
}