Использование Test-Connection для сетевого мониторинга

В 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 для сетевого мониторинга

А так выполняется проверка доступности узла по его IP-адресу:

Test-Connection -ComputerName 8.8.8.8

Проверка доступности узла по его IP-адресу

В данном случае после параметра -ComputerName необходимо указать имя или IP-адрес хоста, доступ до которого нужно проверить.

Дополнительные параметры

При запуске командлета Test-Connection могут использоваться следующие дополнительные параметры:

  • -Count: указывает количество эхо-запросов, которые нужно отправить. Значение по умолчанию — 4.
  • -BufferSize: указывает размер буфера для каждого эхо-запроса в байтах.
  • -TimeoutSeconds: указывает максимальное время ожидания ответа в секундах.
  • -AsJob: выполняет команду как фоновое задание, что позволяет продолжить работу в PowerShell, пока проверка выполняется.
  • -Traceroute: выполняет трассировку маршрута до удалённого хоста.

Примеры команд

Проверка доступности нескольких хостов:

Test-Connection -ComputerName google.com, microsoft.com, yahoo.com

Проверка доступности нескольких хостов - Использование Test-Connection для сетевого мониторинга

Проверка доступности с указанием количества запросов:

Test-Connection -ComputerName google.com -Count 3

Проверка доступности с указанием количества запросов

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

Test-Connection -ComputerName google.com -BufferSize 64

Проверка доступности с указанием размера буфера

Запуск задания в фоновом режиме:

Test-Connection -ComputerName google.com -AsJob

Запуск задания в фоновом режиме

Проверка доступности с указанием времени ожидания:

Test-Connection -ComputerName google.com -TimeoutSeconds 2

Проверка доступности с указанием времени ожидания

Трассировка маршрута до хоста:

Test-Connection -ComputerName google.com -Traceroute

Трассировка маршрута до хоста - Использование Test-Connection для сетевого мониторинга

Здесь следует отметить, что если ваша версия 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 доступна практически на всех платформах и в любой операционной системе и её легко использовать для быстрых и простых проверок доступности удалённого хоста.

Вам также может понравиться