Битлента
Сетевые команды и утилиты5 мин чтения·

Test-NetConnection в PowerShell: как проверить порт и маршрут до узла

Как командой Test-NetConnection (tnc) проверить доступность TCP-порта, пинг и трассировку в Windows, прочитать поля результата и получить True или False.

Кратко

Test-NetConnection узел -Port 443 проверяет TCP-порт и возвращает поле TcpTestSucceeded. Параметр -TraceRoute добавляет маршрут, а -InformationLevel Quiet оставляет только True или False для скриптов.

Что умеет командлет и где он доступен

Test-NetConnection — встроенный командлет PowerShell для проверки связи. Он заменяет сразу три привычных инструмента: ping для проверки достижимости, telnet для проверки порта и tracert для маршрута. Для него не нужно ничего устанавливать, а сокращённое имя tnc набирается быстрее.

Командлет входит в модуль сетевых средств Windows и доступен в Windows PowerShell 5.1 на современных версиях системы, а также в PowerShell 7 при запуске в Windows. В macOS и Linux его нет: там пользуйтесь nc, ping и traceroute.

Запуск без параметров проверяет доступ в интернет: он отправляет пробы на служебный узел и показывает результат. Чаще всего нужны параметры, приведённые ниже.

ПараметрЧто делает
-ComputerNameИмя или адрес узла (можно указать первым словом)
-PortНомер TCP-порта для проверки
-CommonTCPPortГотовое имя порта: HTTP, RDP, SMB, WINRM
-TraceRouteДобавляет трассировку маршрута
-Hops NОграничивает число переходов при трассировке
-InformationLevelQuiet возвращает True или False, Detailed — больше сведений

Проверка порта: команда и разбор вывода

Основной вариант: Test-NetConnection example.com -Port 443. Командлет сначала разрешает имя, затем пробует ping, затем открывает TCP-соединение на указанном порту. Результат выводится списком полей.

Пример вывода (пример): ComputerName: example.com; RemoteAddress: 203.0.113.10; RemotePort: 443; InterfaceAlias: Ethernet; SourceAddress: 192.168.1.25; TcpTestSucceeded: True. Адрес взят из блока документации и служит иллюстрацией.

Главное поле — TcpTestSucceeded. Значение True означает, что соединение установлено. Значение False говорит, что подключиться не удалось, и рядом с ним PowerShell выдаст предупреждение вида TCP connect to (адрес : порт) failed. Поле PingSucceeded показывает результат проверки ICMP: узел может отвечать на ping и при этом быть недоступным по порту, либо наоборот, не отвечать на ping из-за фильтра, но принимать соединения. Поэтому ориентируйтесь именно на порт.

Поле InterfaceAlias подсказывает, через какой сетевой адаптер пошёл запрос, а SourceAddress — какой у вас адрес. Это удобно, если в системе несколько адаптеров, например Ethernet, Wi-Fi и виртуальные.

Скрипты и быстрые проверки

Для скриптов нужен короткий ответ. Команда Test-NetConnection example.com -Port 443 -InformationLevel Quiet вернёт только True или False. Такой результат можно использовать в условии: if (Test-NetConnection 192.168.1.20 -Port 3389 -InformationLevel Quiet) { "доступен" }. Чтобы проверить несколько портов, подойдёт цикл: 22,80,443 | ForEach-Object { Test-NetConnection example.com -Port $_ | Select-Object RemotePort, TcpTestSucceeded }.

Для трассировки: Test-NetConnection example.com -TraceRoute выводит список узлов маршрута в поле TraceRoute. Это удобное дополнение к tracert, хотя менее подробное: нет времён по каждому шагу.

Для типовых служб пригодятся готовые имена: Test-NetConnection 192.168.1.30 -CommonTCPPort RDP проверит порт удалённого рабочего стола, а WINRM — порт удалённого управления. Так меньше шансов ошибиться в номере порта.

  1. Откройте PowerShell (не обязательно от имени администратора).
  2. Выполните команду с нужным узлом и портом.
  3. Найдите поле TcpTestSucceeded и запишите значение.
  4. Если False, выполните проверку с другого устройства в той же сети и с проводного подключения, чтобы отделить проблему узла от проблемы канала.
  5. Повторите проверку после изменений правил брандмауэра или проброса портов.
🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Чем результат может обмануть

Успех проверки подтверждает только TCP-соединение. Служба за портом может быть неисправна, а веб-сервер способен отвечать ошибкой 500 при открытом порту. Неудача не всегда означает отсутствие службы: причиной бывает брандмауэр Windows, антивирус, фильтр на роутере или на стороне провайдера.

Командлет не проверяет UDP: порты этого типа он не поддерживает. Для DNS-проверки используйте Resolve-DnsName, а для UDP-служб — специальные инструменты. Обратите внимание и на то, что при проверке по имени команда использует кэш DNS-клиента: если запись недавно менялась, сбросьте кэш командой Clear-DnsClientCache.

Если после -Port для устройства в локальной сети получаете False, а с других компьютеров тот же порт открыт, проверьте профиль сети на проблемном компьютере и правила исходящих соединений. Иногда защитное программное обеспечение блокирует исходящие подключения на нестандартные порты.

Отличия от других систем и итоговый порядок проверки

В macOS и Linux аналогом служит nc -zv узел порт, для маршрута — traceroute или mtr, для ping — ping. Логика та же, вывод отличается. Для смешанной среды заведите шпаргалку: имя порта, команда для Windows и для Linux.

Чтобы диагностика шла быстро, идите по цепочке: DNS разрешает имя, ping показывает достижимость, порт подтверждает доступность службы, а трассировка отвечает на вопрос, где обрывается путь. Test-NetConnection даёт ответы на все четыре вопроса одной командой. Выполняйте проверки только для своих и разрешённых узлов и не запускайте их массово по чужим сетям.

Пример разбора реальной ситуации

Допустим, удалённый рабочий стол на компьютере в соседней комнате не подключается. Выполните Test-NetConnection с адресом компьютера и параметром -CommonTCPPort RDP. Если значение True, сеть в порядке, ищите проблему в учётных данных, настройках доступа или в самой программе клиента. Если False, а PingSucceeded равен True, компьютер жив, но порт закрыт: вероятно, удалённый доступ выключен или его блокирует брандмауэр на самом компьютере.

Если и ping не проходит, проверьте, включён ли компьютер, тот же ли у него адрес (роутер мог выдать другой), не изменилась ли сеть подключения на общедоступную, для которой правила строже. Свежий адрес компьютера смотрите командой ipconfig на нём самом либо в списке клиентов роутера. Так вы за минуту исключите половину версий и сузите поиск.

Ещё одна ситуация: сайт открывается в браузере, но не работает приложение. Проверьте порт, который использует приложение: иногда он нестандартный, и корпоративный или домашний фильтр пропускает только 80 и 443. Test-NetConnection с нужным портом сразу это покажет.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
powershellwindowsпортыдиагностика

Часто задаваемые вопросы

Читайте также