У меня частенько бывает необходимость пинговать группу IP-адресов, или целую подсеть, без возможности использования стороннего ПО. PowerShell может легко справиться с этой задачей в одну строчку.
Разберем данную команду. С помощью конструкции 1..254 создается список из 254 чисел от 1 до 254. Далее, данный список обрабатывается в цикле %{...}. В качестве подстановки текущего значения цикла используется переменная $_.
Пингованием занимается стандартная утилита ping.exe. Выбрана она из-за более быстрой скорости работы. Данной утилите передаются параметры -n 1, что означает отправлять один пакет, и -w 10, время ожидания в миллисекундах. Перенаправление вывода утилиты ping перенаправляется в пустоту, этим занимается конструкция > $null.
После выполнения команды ping, последовательно проверятся код возврата if($LASTEXITCODE -eq 0). Если он положительный, то есть равен 0, то выводится IP-адрес со знаком плюс, в противном случае со знаком минус.
Модифицируем команду для вывода только доступных (активных) адресов.
Теперь, настроим команду на вывод недоступных адресов, то есть потенциально свободных.
Подобную команду можно использовать не только для пингования, но и для проверки доступности TCP-портов, но об этом в следующий раз.
В статье было рассмотрено: Как выполнить пинг группы IP-адресов с помощью PowerShell?
Содержание
Вывод Всех Адресов
Команда пинга всех адресов, доступных и недоступных (активных и неактивных), будет выглядеть так:
1..254 | %{ping -n 1 -w 10 192.168.0.$_ > $null; if($LASTEXITCODE -eq 0) {"192.168.0.$_+"} else {"192.168.0.$_-"}}
Разберем данную команду. С помощью конструкции 1..254 создается список из 254 чисел от 1 до 254. Далее, данный список обрабатывается в цикле %{...}. В качестве подстановки текущего значения цикла используется переменная $_.
Пингованием занимается стандартная утилита ping.exe. Выбрана она из-за более быстрой скорости работы. Данной утилите передаются параметры -n 1, что означает отправлять один пакет, и -w 10, время ожидания в миллисекундах. Перенаправление вывода утилиты ping перенаправляется в пустоту, этим занимается конструкция > $null.
После выполнения команды ping, последовательно проверятся код возврата if($LASTEXITCODE -eq 0). Если он положительный, то есть равен 0, то выводится IP-адрес со знаком плюс, в противном случае со знаком минус.
Вывод Только Доступных Адресов
Модифицируем команду для вывода только доступных (активных) адресов.
1..254 | %{ping -n 1 -w 10 192.168.0.$_ > $null; if($LASTEXITCODE -eq 0) {"192.168.0.$_"}}
Вывод Только Недоступных Адресов
Теперь, настроим команду на вывод недоступных адресов, то есть потенциально свободных.
1..254 | %{ping -n 1 -w 10 192.168.0.$_ > $null; if($LASTEXITCODE -ne 0) {"192.168.0.$_"}}
Итог
Подобную команду можно использовать не только для пингования, но и для проверки доступности TCP-портов, но об этом в следующий раз.
В статье было рассмотрено: Как выполнить пинг группы IP-адресов с помощью PowerShell?
Комментариев нет :
Отправить комментарий