Как проверить доступность TCP-порта с помощью PowerShell?
Успешность выполнения команды охарактеризовывает параметр TcpTestSucceeded. Значение True свидетельствует об успешности проверки, False об неудаче. В данном случае, я проверял существующий домен на открытость TCP-порта 80 (HTTP). Попробуем теперь выполнить аналогичную проверку для заведомо несуществующего хоста:
Вывод команды изменился. Параметр TcpTestSucceeded отсутствует. Появился новый параметр, PingSucceeded со значением False, при проверке портов, всегда будет равен False.
На самом деле информация о параметре TcpTestSucceeded существует, просто она не попала в вывод. Осуществить вывод всех параметров можно следующей командой:
Вывод стал информативнее. Параметр TcpTestSucceeded снова на месте, но уже со значением равным False. Это значит, что проверяемый TCP-порт закрыт.
Командная оболочка PowerShell является объектно ориентированной. То есть, любое возвращаемое значение, от любого командлета, является объектом. Следовательно, поле TcpTestSucceeded можно использовать при написании условий. Пример:
Как было сказано ранее, поле TcpTestSucceeded не единственное доступное для использования. Полезным может оказаться и поле PingSucceeded, указывающее на успешность пинга.
Единственное замечание по этим полям. При проверке портов, поле PingSucceeded всегда будет False. При выполнении командлета Test-NetConnection без параметра -Port, поле TcpTestSucceeded также, всегда будет равно False.
В статье было рассмотрено: Как выполнить проверку TCP-порта в PowerShell?
PowerShell позволяет выполнить проверку доступности TCP-портов с помощью встроенного командлета Test-NetConnection. Пример команды:
# Проверка доступности порта TCP 80 для хоста www.bootdev.ru
Test-NetConnection www.bootdev.ru -Port 80
Успешность выполнения команды охарактеризовывает параметр TcpTestSucceeded. Значение True свидетельствует об успешности проверки, False об неудаче. В данном случае, я проверял существующий домен на открытость TCP-порта 80 (HTTP). Попробуем теперь выполнить аналогичную проверку для заведомо несуществующего хоста:
Test-NetConnection no.bootdev.ru -Port 80
Вывод команды изменился. Параметр TcpTestSucceeded отсутствует. Появился новый параметр, PingSucceeded со значением False, при проверке портов, всегда будет равен False.
На самом деле информация о параметре TcpTestSucceeded существует, просто она не попала в вывод. Осуществить вывод всех параметров можно следующей командой:
Test-NetConnection no.bootdev.ru -Port 80 | Format-List *
Вывод стал информативнее. Параметр TcpTestSucceeded снова на месте, но уже со значением равным False. Это значит, что проверяемый TCP-порт закрыт.
Использование в Cкриптах
Командная оболочка PowerShell является объектно ориентированной. То есть, любое возвращаемое значение, от любого командлета, является объектом. Следовательно, поле TcpTestSucceeded можно использовать при написании условий. Пример:
if ((Test-NetConnection www.bootdev.ru -Port 80).TcpTestSucceeded) {echo "Порт открыт :)"} else {echo "Порт закрыт :("}
if ((Test-NetConnection no.bootdev.ru -Port 80).TcpTestSucceeded) {echo "Порт открыт :)"} else {echo "Порт закрыт :("}
Как было сказано ранее, поле TcpTestSucceeded не единственное доступное для использования. Полезным может оказаться и поле PingSucceeded, указывающее на успешность пинга.
Единственное замечание по этим полям. При проверке портов, поле PingSucceeded всегда будет False. При выполнении командлета Test-NetConnection без параметра -Port, поле TcpTestSucceeded также, всегда будет равно False.
Итог
В статье было рассмотрено: Как выполнить проверку TCP-порта в PowerShell?
Комментариев нет :
Отправить комментарий