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()
}