Powershell
June 8, 2023
Как проверить открыт ли порт через PowerShell
Иногда возникает ситуация, когда надо проверить доступность порт на каком либо ресурсе. И если проверить открыт ли порт TCP мы знаем как:
Test-NetConnection <host or ip> -port <port>
то как проверить открыт ли порт UDP - не всегда. Проверить открыт ли порт UDP можно, но немного сложнее:
$IPAddress = "<host or ip>" $Port = <port> $Timeout = 2000 # Время ожидания ответа в миллисекундах $udpClient = New-Object System.Net.Sockets.UdpClient try { $localEndPoint = New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Any, 0) $udpClient.Client.Bind($localEndPoint) $result = $udpClient.BeginReceive($null, $null) $udpClient.Connect($IPAddress, $Port) $null = $udpClient.Send([byte[]](0), 0) $success = $result.AsyncWaitHandle.WaitOne($Timeout) if ($success) { $remoteEndPoint = [System.Net.IPEndPoint]$udpClient.Client.RemoteEndPoint Write-Host "UDP Port $Port is open on $IPAddress" } else { Write-Host "UDP Port $Port is closed or timed out on $IPAddress" } } catch { Write-Host "Error occurred: $_" } finally { $udpClient.Close() }