![](https://ultravds.com/wp-content/uploads/2024/06/1-61.png)
В PowerShell присутствует такой командлет, как Test-Connection
, который предназначен для проверки доступности удалённого компьютера или сервера через сеть. Test-Connection
является аналогом команды ping
в командной строке. Командлет отправляет эхо-запросы на целевой хост, используя протокол ICMP, и возвращает результаты, показывающие, достиг ли запрос исследуемого узла и сколько времени это заняло.
ICMP (Internet Control Message Protocol) — это сетевой протокол, используемый для диагностики сетевых соединений и передачи сообщений об ошибках в сетевых устройствах. Он является частью семейства интернет-протоколов, работающих на сетевом уровне модели OSI (layer 3).
Когда вы в PowerShell выполняете команду Test-Connection
, она отправляет сообщения ICMP Echo Request
на указанный узел. Эти сообщения аналогичны тем, которые отправляет команда ping
.
Целевой хост получает сообщение ICMP Echo Request
и отвечает сообщением ICMP Echo Reply
. Время между отправкой запроса и получением ответа используется для измерения задержки (latency).
Командлет имеет следующий синтаксис:
Test-Connection -ComputerName <имя_узла_или_IP_адрес> [дополнительные параметры]
Например, так выглядит команда проверки доступности узла google.com
:
Test-Connection -ComputerName google.com
![Проверка доступности узла - Использование Test-Connection для сетевого мониторинга](https://ultravds.com/wp-content/uploads/2024/06/1-53-1024x152.png)
А так выполняется проверка доступности узла по его IP-адресу:
Test-Connection -ComputerName 8.8.8.8
![Проверка доступности узла по его IP-адресу](https://ultravds.com/wp-content/uploads/2024/06/1-54-1024x152.png)
В данном случае после параметра -ComputerName
необходимо указать имя или IP-адрес хоста, доступ до которого нужно проверить.
Дополнительные параметры
При запуске командлета Test-Connection
могут использоваться следующие дополнительные параметры:
-Count
: указывает количество эхо-запросов, которые нужно отправить. Значение по умолчанию — 4.-BufferSize
: указывает размер буфера для каждого эхо-запроса в байтах.-TimeoutSeconds
: указывает максимальное время ожидания ответа в секундах.-AsJob
: выполняет команду как фоновое задание, что позволяет продолжить работу в PowerShell, пока проверка выполняется.-Traceroute
: выполняет трассировку маршрута до удалённого хоста.
Примеры команд
Проверка доступности нескольких хостов:
Test-Connection -ComputerName google.com, microsoft.com, yahoo.com
![Проверка доступности нескольких хостов - Использование Test-Connection для сетевого мониторинга](https://ultravds.com/wp-content/uploads/2024/06/1-55-1024x279.png)
Проверка доступности с указанием количества запросов:
Test-Connection -ComputerName google.com -Count 3
![Проверка доступности с указанием количества запросов](https://ultravds.com/wp-content/uploads/2024/06/1-56-1024x142.png)
Проверка доступности с указанием размера буфера:
Test-Connection -ComputerName google.com -BufferSize 64
![Проверка доступности с указанием размера буфера](https://ultravds.com/wp-content/uploads/2024/06/1-57-1024x153.png)
Запуск задания в фоновом режиме:
Test-Connection -ComputerName google.com -AsJob
![Запуск задания в фоновом режиме](https://ultravds.com/wp-content/uploads/2024/06/1-58-1024x112.png)
Проверка доступности с указанием времени ожидания:
Test-Connection -ComputerName google.com -TimeoutSeconds 2
![Проверка доступности с указанием времени ожидания](https://ultravds.com/wp-content/uploads/2024/06/1-60.png)
Трассировка маршрута до хоста:
Test-Connection -ComputerName google.com -Traceroute
![Трассировка маршрута до хоста - Использование Test-Connection для сетевого мониторинга](https://ultravds.com/wp-content/uploads/2024/06/3.png)
Здесь следует отметить, что если ваша версия PowerShell ниже 6.0, то в этом случае такие параметры, как -TimeoutSeconds
или -Traceroute
, могут быть недоступны. Поэтому, чтобы воспользоваться командлетом Test-Connection
с использованием данных параметров, необходимо обновить PowerShell до последней версии.
Pros and cons
Несмотря на всю схожесть командлета Test-Connection
и команды ping
, всё же они имеют некоторые отличия в функциональности и возможностях.
Команда ping
является утилитой командной строки, которая доступна практически в любой операционной системе, включая Windows, Linux и macOS. При этом Test-Connection
— это командлет PowerShell, который работает в среде данной командной оболочки, доступной в Windows и других платформах, где установлен PowerShell, например, Linux с PowerShell Core.
В командной строке ping
возвращает текстовый вывод, который отображается в консоли. Его сложнее обработать программно, так как требуется парсинг текста. Test-Connection
возвращает объекты PowerShell с подробной информацией о результатах проверки, что упрощает дальнейшую обработку данных скриптами PowerShell.
Команда ping
предлагает базовые опции, такие как указание количества запросов, размер пакета, время ожидания и т.п. В то же время Test-Connection
располагает более расширенными возможностями. К ним можно отнести выполнение команды как фонового задания и выполнение трассировки. Также командлет поддерживает выполнение проверки нескольких хостов одновременно. Это позволяет не выполнять несколько отдельных команд для каждого узла и легко сравнить задержки и доступность для разных хостов.
Заключение
Таким образом, полученные с помощью Test-Connection
результаты легко использовать в скриптах и других командлетах PowerShell. Кроме того, Test-Connection
обладает более гибкими и мощными параметрами для проверки сетевой доступности и диагностики.
При этом команда ping
доступна практически на всех платформах и в любой операционной системе и её легко использовать для быстрых и простых проверок доступности удалённого хоста.