Проверка открытых портов с помощью PowerShell

05.07.2023

itpro

PowerShell, Windows 10, Windows 11, Windows Server 2019

комментариев 7
В PowerShell для проверки доступности порта на удаленном компьютере можно использовать командлет Test-NetConnection. Этот командлет позволяет проверить доступность удаленного сервера или службы на нем, протестировать блокируется ли TCP порт файерволами, проверить доступность по ICMP и маршрутизацию. По сути, командлет Test-NetConnection позволяет заменить сразу несколько привычных сетевых утилит: ping, traceroute, telnet, сканер TCP портов и т.д.
Проверка доступности TCP порта с помощью Test-NetConnection
Командлет Test-NetConnection можно использовать только для проверки TCP портов. Например, чтобы проверить, что на почтовом сервере открыт порт TCP 25 (SMTP протокол), выполните команду:
Test-NetConnection -ComputerName msk-msg01 -Port 25
Примечание. С помощью командлета Test-NetConnection можно проверить только TCP соединение, для проверки доступности UDP портов он не применим.
В сокращенном виде аналогичная команда выглядит так:
TNC msk-mail1 -Port 25

Разберем результат команды:
ComputerName : msk-msg01 RemoteAddress : 10.10.1.7 RemotePort : 25 InterfaceAlias : CORP SourceAddress : 10.10.1.70 PingSucceeded : True PingReplyDetails (RTT) : 0 ms TcpTestSucceeded : True
Как вы видите, командлет выполняет разрешение имени сервера в IP адрес, выполняется проверка ответа ICMP (аналог ping) и проверка ответа от TCP порта (доступность). Указанный сервер доступен по ICMP ( PingSucceeded = True ) и 25 TCP порт также отвечает ( RemotePort=25, TcpTestSucceeded= True ).
Примечание. Если команда вернула PingSucceeded=False и TcpTestSucceeded= True, скорее всего означает, что на удаленном сервере запрещен ICMP Ping.
Если выполнить команду Test-NetConnection без параметров, выполнится проверка наличия подключения к интернету на компьютере (проверяется доступность узла internetbeacon.msedge.net):

Для вывода детальной информации при проверки удаленного TCP порта можно добавить опцию -InformationLevel Detailed:
TNC 192.168.31.102 -Port 3389 -InformationLevel Detailed

Доступность популярных сервисов Windows на удаленном компьютере (HTTP, RDP, SMB, WINRM) можно проверить с помощью параметра CommonTCPPort.
Например, чтобы проверить доступность веб-сервера, можно использовать команду:
Test-NetConnection -ComputerName winitpro.ru -CommonTCPPort HTTP
Test-NetConnection msk-rds1 –CommonTCPPort RDP
Можно вывести все параметры, которые возвращает командлет Test-NetConnection:
Test-NetConnection msk-man01 -port 445|Format-List *

Если нужна только информация по доступности TCP порта, в более лаконичном виде проверка может быть выполнена так:
TNC msk-mail1 -Port 25 -InformationLevel Quiet
Командлет вернул True, значит удаленный порт доступен.
![]()
Совет. В предыдущих версиях Windows PowerShell (до версии 4.0) проверить доступность удаленного TCP порта можно было так:
(New-Object System.Net.Sockets.TcpClient).Connect(‘msk-msg01’, 25)

Командлет Test-NetConnection можно использовать для трассировки маршрута до удаленного сервера при помощи параметра –TraceRoute (аналог команды трассировки маршрута tracert). С помощью параметра –Hops можно ограничить максимальное количество хопов при проверке.
Test-NetConnection msk-man01 –TraceRoute
Командлет вернул сетевую задержку при доступе к серверу в миллисекундах ( PingReplyDetails (RTT) : 41 ms ) и все IP адреса маршрутизаторов на пути до целевого сервера.

PowerShell: проверка открытых портов на нескольких IP хостах
С помощью PowerShell можно проверить доступность определенного порта на нескольких компьютерах. Сохраните список серверов или IP адресов в текстовый файл servers.txt.
Например, ваша задача – найти сервере на которых не отвечает или закрыт порт TCP/25:
Вы можете использовать PowerShell в качестве простейшую систему мониторинга, которая проверяет доступность серверов и выводит уведомление, если один из серверов недоступен.
Например, вы можете проверить доступность основных служб на всех контроллерах домена в AD (список DC можно получить командлетом Get-ADDomainController). Проверим следующие службы на DC (в утилите PortQry есть аналогичное правило Domain and trusts):
- RPC – TCP/135
- LDAP – TCP/389
- LDAP – TCP/3268
$Ports = «135»,»389″,»636″,»3268″,»53″,»88″,»445″,»3269″, «80», «443»
$AllDCs = Get-ADDomainController -Filter * | Select-Object Hostname,Ipv4address
ForEach($DC in $AllDCs)Foreach ($P in $Ports)$check=Test-NetConnection $DC.Ipv4address -Port $P -WarningAction SilentlyContinue
If ($check.tcpTestSucceeded -eq $true)
«>
else
» -ForegroundColor Red>
>
>
Скрипт проверит указанные TCP порты на контроллерах домена, и, если один из портов недоступен, выделит его красным цветом (можно запустить данный PowerShell скрипт как службу Windows).

IP сканер сети на PowerShell
Вы можете реализовать простой IP сканер, которые сканирует удаленные хосты или IP подсети на открытые/закрытые TCP порты.
Чтобы просканировать диапазон IP адресов с 10.10.10.5 до 10.10.10.30 и вывести компьютеры, на которых открыт порт 3389:
foreach ($ip in 5..30)
Можно просканировать диапазон TCP портов (от 1 до 1024) на указанном сервере:

Вывести список открытых портов в Windows
Если вам нужно вывести список портов, открытых на локальном компьютере, исопльзуется командлет Get-NetTCPConnection (это PowerShell-эквивалент NETSTAT). Полный список открытых портов на компьютере можно вывести так:
Get-NetTcpConnection -State Listen | Select-Object LocalAddress,LocalPort| Sort-Object -Property LocalPort | Format-Table

Командлет Get-NetTCPConnection также можно использовать для просмотра списка открытых TCP/IP подключений.
Если вам нужно проверить, какая программа (процесс) слушает определенный порт на вашем компьютере, выполните команду:
Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess | ft Id, ProcessName, UserName, Path
Предыдущая статья Следующая статья
Как проверить, открыт ли порт
В этой статье мы расскажем, что такое порт, какие они бывают и как проходит проверка порта на локальном и удаленном компьютере.
Вы можете узнать, открыт ли порт, с помощью нашего сервиса проверки доступности портов.
Что такое порт
Порт — это числовой идентификатор программы или процесса, который обслуживает сетевые соединения на заданном IP-адресе. Номера портов могут быть от 0 до 65 535.
Каждое устройство (компьютер, ноутбук, мобильный телефон и др.) имеет свой IP-адрес. Он дает возможность организовывать сетевые соединения между устройствами. Но на отдельном устройстве может быть запущено несколько сетевых приложений одновременно. Например, есть интернет-сервер с IP-адресом. На нем расположен: веб-сервер, почтовый сервер, FTP-сервер. Как сделать так, чтобы мы могли связаться именно с почтовым сервером? Для этого и нужен порт. Порты предоставляют возможность идентифицировать сетевые приложения на отдельно взятом компьютере.
Есть стандартные порты, такие как:
- порт 80 — для веб-сервера, который работает по протоколу HTTP,
- порт 443 — для защищенного SSL-сертификатом веб-сервера, который работает по протоколу HTTPS,
- порт 21 — для FTP-протокола (протокола передачи файлов).
Как проверить, открыт ли порт
Проверка порта на доступность возможна как для своего (локального) компьютера , так и для удаленного.
Как узнать, какие порты открыты на локальном компьютере в Windows
- Вызовите командную строку сочетанием клавиш Win+R.
- Введите команду «cmd» и нажмите ОК:
- Пропишите команду netstat -a и кликните Enter:
Готово, перед вами список открытых портов на вашем компьютере.
Как узнать, какие порты открыты на удаленном компьютере
Провести проверку портов на открытость удаленного компьютера можно при помощи команды telnet.
Telnet — это утилита, с помощью которой можно соединиться с удаленным портом любого компьютера. Telnet позволяет установить связь, чтобы передавать команды и получать ответы (например, сделать проброс портов).
В Windows 7/8/10 и Vista утилита telnet отключена по умолчанию. Утилиту можно установить по инструкции.
Как проверить доступность порта с помощью команды telnet в Windows:
- Вызовите командную строку сочетанием клавиш Win+R.
- Введите команду «cmd» и нажмите ОК.
- В окне терминала введите команду: telnet имя_сервера номер_порта (например, telnet mysite.ru 31). Можно проверить порт на доступность по IP, если ввести команду telnet IP_сервера номер_порта (например, telnet 10.0.119.127 31).
- Если на экране появится текст «“telnet” не является внутренней или внешней командой, исполняемой программой или пакетным файлом», то на вашем компьютере отключена утилита и ее надо установить по инструкции:
- Если на экране командной строки появится ошибка, значит порт закрыт:
- Если экран станет полностью пустым или появится приглашение сервера, значит порт открыт:
Популярные статьи
- Как указать (изменить) DNS-серверы для домена
- Я зарегистрировал домен, что дальше
- Как добавить запись типа A, AAAA, CNAME, MX, TXT, SRV для своего домена
- Что такое редирект: виды и возможности настройки
- Как создать почту со своим доменом
Проверка подключения через порт 443
Movere использует порт 443 для ряда задач, как описано в таблице.
| Расположение | порт. | Сведения |
|---|---|---|
| Консоль Movere | 443 исходящий (внешний) | Отправка полезных данных сканирования из консоли в облако. |
| Консоль Movere | 443 исходящий (внутренний) | Скачайте файл token.txt. |
| Консоль Movere | 443 входящих (внутренних) | Внутренний трафик между отсканированными устройствами и консолью. |
| Отсканированные устройства | 443 исходящий (внешний) | Отправка полезных данных сканирования непосредственно в облако. |
| Отсканированные устройства | 443 исходящий (внутренний) | Отправка полезных данных обратно в консоль. |
Возможно, потребуется проверить подключение 443, если подключение или сканирование не работает должным образом.
Тестирование на устройствах Windows
Ниже приведены два способа проверки подключения к порту 443 на компьютерах с Windows.
- Использование команды psping на основе региона клиента
- Использование PowerShell
Тестирование с помощью команд psping

- Скачайте PSTools.
- Распакуть файлы и открыть командную строку в распакованой папке.
- Выполните команду psping, используя URL-адрес в зависимости от региона клиента : psping :443 , psping :443 и psping :443 .
Тестирование с помощью PowerShell
Вы также можете проверить подключение к Облачные службы Movere с помощью Windows PowerShell. r

- На компьютере консоли откройте окно PowerShell.
- Выполните следующую команду, чтобы протестировать Test-NetConnection -Port 443 -ComputerName -InformationLevel Detailed
- Более старые версии PowerShell, в которых Test-NetConnection недоступен, могут использовать: $t = New-Object System.Net.Sockets.TcpClient », 443; if($t.Connected)
- Пользователи должны использовать URL-адрес соответствующего региона в команде PowerShell, в которой находится их клиент. Подробнее
- Пользователи должны получить tcpTestSucceededed = TRUE, как показано ниже
- На этом шаге показано, что TCP-порт 443 открыт с компьютера пользователя в облачные службы Movere (в данном случае — API инструментов).
- Пользователи также могут проверить доступ к портам для отправки данных инвентаризации и потребления ресурсов, заменив API инструмента соответствующим URL-адресом в зависимости от региона клиента.
Тестирование в Linux
Используйте одну из следующих команд, чтобы проверить подключение к порту 443 во всех дистрибутивах Linux.
Дальнейшие действия
- Ознакомьтесь с требованиями к портам для консоли Movere.
- Ознакомьтесь с требованиями к портам для проверки устройств Windows и Linux .
Заблокирован порт 443 сервера ESXi
Ответ доступен с подключенной услугой «Техническая поддержка».
Внимание! Для авторизации используйте учетные данные Личного кабинета
Если учетная запись от новой версии личного кабинета отсутствует, просим писать на почту lk@astralinux.ru
- Проверить доступность порта 443:
- Установить утилиту netcat :
sudo apt install netcat --yes
netcat -zvw5 443
где
10.0.0.99: inverse host lookup failed: Unknown host (UNKNOWN) [10.0.0.99] 443 (https) open
Возможная причина: Заблокирован порт 443 сервера ESXi . Перейти к решению.