Часто стоит задача узнать на каком узле сети запущен тот или иной сервис и доступен ли он. Можно, конечно, скачать какое-либо подходящее ПО, а можно воспользоваться PowerShell.
Думаю, все знают командлет
Test-NetConnection, который позволяет проверить открытый TCP порт, например:Test-NetConnection srv-01 -Port 443
В результате получим сообщение о том, доступен ли порт и еще ряд полезной информации об узле. Если же нам нужен просто ответ да или нет, то сократим разговорчивость команды: Test-NetConnection srv-01 -Port 443 -InformationLevel "Quiet"
А теперь превратим этот командлет в простейший сканер как говорится, не вставая со стула, пишем простой однострочный скрипт:foreach ($ip in 1..254) {Test-NetConnection -Port 443 -InformationLevel "Detailed" 192.168.0.$ip}
Который просканирует адреса с 1 по 254 и выдаст подробный вывод по каждому узлу. Работает не быстро, но свою работу делает. Если нужно просто знать открыт порт или закрыт, то меняем -InformationLevel "Detailed"
на -InformationLevel "Quiet"
И чем хорош данный вариант, что это PowerShell и мы можем продолжать обрабатывать результат дальше или вообще оформить все отдельным скриптом.