Битлента
Словарь терминов3 мин чтения·

PowerShell: базовые сетевые командлеты для проверки подключения

PowerShell даёт структурированные сетевые команды: Test-NetConnection, Get-NetIPConfiguration, Resolve-DnsName. Что запускать и как читать результат.

Оболочка, работающая с объектами

PowerShell — оболочка и язык сценариев Microsoft. Главное отличие от cmd: команды, называемые командлетами, возвращают не текст, а объекты со свойствами. Поэтому результат можно фильтровать, сортировать и подставлять в следующую команду без ручного разбора строк.

Имена командлетов построены по схеме «глагол-существительное»: Get-, Set-, Test-, Resolve-. Получив общую логику, вы часто догадываетесь о названии нужной команды сами.

В современных версиях Windows PowerShell установлен сразу, а рядом существует кроссплатформенная редакция с отдельным номером версии. Интерфейс командной строки в PowerShell обладает автодополнением, подсветкой синтаксиса и историей, что делает работу заметно удобнее.

Что проверить по сети

Test-NetConnection с параметрами -ComputerName и -Port проверяет доступность конкретного порта на узле; без порта он использует ping. Get-NetIPConfiguration показывает адреса, шлюзы и DNS-серверы адаптеров, Get-NetAdapter — состояние самих адаптеров и скорость соединения. Resolve-DnsName запрашивает записи DNS аналогично nslookup, но с более подробным результатом.

Для соединений подходит Get-NetTCPConnection: он выводит локальные и удалённые адреса, порты, состояния и идентификаторы процессов. Get-DnsClientCache показывает содержимое кеша, а Clear-DnsClientCache очищает его.

Кроме перечисленного, полезен Get-NetRoute для просмотра таблицы маршрутов и Get-NetIPAddress для списка адресов интерфейсов. Get-DnsClientServerAddress покажет, какие DNS-серверы назначены каждому адаптеру, а Get-NetFirewallProfile — состояние встроенного брандмауэра.

Как читать результаты

Test-NetConnection выводит поле TcpTestSucceeded: значение True значит, что соединение с портом установлено. Это точнее ping, ведь проверяется реальное подключение к службе, а не просто отклик хоста. Если False, причина может быть как в сети, так и в фильтрации или выключенной службе на другой стороне.

В Get-NetTCPConnection полезно смотреть состояние: Established — соединение активно, Listen — служба ждёт подключений, TimeWait — соединение закрыто, но ещё удерживается.

Особенно наглядно поле PingSucceeded: оно сообщает, отвечает ли узел на эхо-запрос, независимо от того, открыт ли нужный порт. Комбинация PingSucceeded True и TcpTestSucceeded False указывает, что сам сервер работает, но нужная служба либо не запущена, либо закрыта фильтром.

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

Приёмы, экономящие время

Конвейер связывает команды: Get-NetTCPConnection | Where-Object State -eq Established оставит только активные соединения. Сортировка и выбор нужных полей делаются через Sort-Object и Select-Object. Формат вывода можно изменить на таблицу или список, а результат — экспортировать в CSV для сравнения.

Справку вызывает Get-Help с именем командлета, а Get-Command с шаблоном подсказывает, какие команды вообще есть в нужной области.

Если результат нужно передать коллеге, добавьте после команды вызов Export-Csv с путём к файлу, и получите таблицу, удобную для сравнения до и после изменений. Аналогичные возможности даёт ConvertTo-Json для выгрузки в структурированном виде.

Границы и ошибки

Часть командлетов требует запуска от имени администратора, иначе вы увидите ошибку доступа. Политика выполнения сценариев по умолчанию ограничивает запуск скриптов-файлов, но вводить команды вручную это не мешает. Команды Set- и Remove- меняют настройки, поэтому запускайте их только понимая последствия.

Частое заблуждение: PowerShell есть только в Windows. Существует и версия для Linux и macOS, но набор сетевых командлетов, о которых речь выше, относится к Windows.

Ошибки вида «не удаётся найти командлет» чаще всего связаны с опечаткой либо с тем, что модуль не подключён в этой редакции оболочки. Читайте текст сообщения целиком: там обычно указано, какая часть команды не распознана.

Как попробовать

Откройте поиск и введите PowerShell. Выполните Get-NetIPConfiguration, затем Test-NetConnection с адресом сайта и портом 443. Сравните результат с обычным ping. Так вы увидите, что порт доступен, даже если ping не проходит, и наоборот.

Попробуйте ещё Resolve-DnsName для домена и сравните результат с ответом другого DNS-сервера, указав его параметром -Server: так видно, различаются ли ответы разных серверов для одного имени.

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

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

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