Команда пингует диапазон адресов 172.0.254.1-172.0.254.254 и выводит результат. Плюс - хост доступен, минус - не доступен.
1..254 | %{ping -n 1 -w 10 172.0.254.$_ > $null; if($LASTEXITCODE -eq 0) {"172.0.254.$_+"} else {"172.0.254.$_-"}}
Результат выглядит так:
PS C:\1..254 | %{ping -n 1 -w 10 172.0.254.$_ > $null; if($LASTEXITCODE -eq 0) {"172.0.254.$_+"} else {"172.0.254.$_-"}}
172.0.254.1+
172.0.254.2+
172.0.254.3-
172.0.254.4-
...
172.0.254.254+
Для себя я сделал короткий скрипт в котором сеть и диапазон ip адресов задается в начале файла скрипта в виде переменных:
$adr = "172.161.254"
$hostrange = 1..254
$hostrange | %{ping -n 1 -w 10 "$adr.$_" > $null; if($LASTEXITCODE -eq 0) {"$adr.$_ +"} else {"$adr.$_ -"}}
Скачать
ping_range_ip.zip [294 b] (cкачиваний: 8)Еще немного усложним скрипт, указав две переменные, которые определяют что выводить в консоль - показывать откликнувшиеся или не откликнувшиеся хосты:
$adr = "172.161.254"
$hostrange = 1..254
#Какие хосты показывать
$showon = 1 # Доступные: 1 - показывать, 0 - не показывать
$showoff = 0 # Недоступные: 1 - показывать, 0 - не показывать
$hostrange | %{ping -n 1 -w 10 "$adr.$_" > $null; if($LASTEXITCODE -eq 0) {if (1 -eq $showon) {"$adr.$_ +"}} else {if (1 -eq $showoff) {"$adr.$_ -"}}}
Скачать
ping_range_ip_v2.zip [416 b] (cкачиваний: 11)Вариант три - теперь все переменные будем запрашивать в консоли PowerShell перед запуском ping-а хостов:
write-host "Введите сеть (без точки в конце, пример 172.161.254)"
$adr = read-host
write-host "Введите начальный адрес хоста (от 1 до 254)"
$hostrange1 = read-host
write-host "Введите конечный адрес хоста (от $hostrange1 до 254)"
$hostrange2 = read-host
write-host "Показывать доступные хосты (1 - да, 0 - нет)"
$showon = read-host
write-host "Показывать недоступные хосты (1 - да, 0 - нет)"
$showoff = read-host
write-host "*** Старт ***"
$hostrange1..$hostrange2 | %{ping -n 1 -w 10 "$adr.$_" > $null; if($LASTEXITCODE -eq 0) {if (1 -eq $showon) {"$adr.$_ +"}} else {if (1 -eq $showoff) {"$adr.$_ -"}}}
Скачать
ping_range_ip_v3.zip [541 b] (cкачиваний: 13)PS:
Если при запуске скрипта получаем ошибку вида:
PS C:\Temp> .\ping_range_ip.ps1
.\ping_range_ip.ps1 : Невозможно загрузить файл C:\Temp\ping_range_ip.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/?LinkID=135170.
строка:1 знак:1
+ .\ping_range_ip.ps1
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : Ошибка безопасности: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Это значит, что Windows защищает пользователя от запуска скриптов PS.
Чтобы не понижать защищенность компьютера просто отключим эту защиту для запущенного процесса PowerShell. Это значит, что после закрытия окна PowerShell политика выполнения вернется в предыдущее состояние.
PS C:\Temp> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
Изменение политики выполнения
Политика выполнения защищает компьютер от ненадежных сценариев. Изменение политики выполнения может поставить подугрозу безопасность системы, как описано в разделе справки, вызываемом командой about_Execution_Policies и расположенном по адресу https:/go.microsoft.com/fwlink/?LinkID=135170 . Вы хотите изменить политику выполнения?
[Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка
(значением по умолчанию является "N"):y
PS C:\Temp>