Проверяем открытость порта в Windows 7 при помощи PowerShell и командлета Test-NetConnection
Всем привет, с вами Александр Глебов. В этой статье я рассказываю, как проверить порт через PowerShell на Windows 7 при помощи командлета Test-NetConnection. Очень часто требуется проверить открытость порта, на каком либо компьютере. Решить эту задачу можно несколькими способами...
Собственно самый популярный способ как проверить открытость порта это юзать команду telnet. Простейший пример проверки порта через телнет:
telnet yandex.ru 80
В результате в командной строке произойдет подключение, значит порт 80 у яндекса открыт.
Но у телнета есть огромный минус, а именно в не зависимости установилось ли подключение по порту или нет команда всегда возвращает 0. А это значит, что telnet не удастся использовать в скриптах, так как конструкцию IF Then Else уже не построишь.
Для решения проблемы можно использовать командлет Test-NetConnection, но на Windows 7 придется пошаманить...
Как проверить порт через PowerShell на Windows 7
Корпорация Microsoft конечно молодцы, они в PowerShell версии 4.0 добавил модуль NetTCPIP, но самое смешное, что этот модуль есть только в PowerShell 5 на Windows 8.1 и Windows 2012 R2. И даже если скачать отдельно PowerShell 4.0 или 5.0 там этого модуля не будет.
Но если взять бубен, набраться терпения, то можно подключить этот модуль ручками. Итак, для этого выполним следующие шаги:
- Сперва необходимо установить PowerShell 5.0 для Windows 7. Скачать можно отсюда.
- Для начала убедимся, что командлет Test-NetConnection у нас не работает. Выполним команду Test-NetConnection:
- Как видим командлет не подцепился. Для его работы необходимо импортировать модуль работы с сетью, для этого скачиваем архив NetTCPIP.zip.
- Распаковываем архив (в архиве папка NetTCPIP, DnsClient, NetSecurity ) в папку Modules: C:\Windows\System32\WindowsPowerShell\v1.0\Modules\
- Открываем PowerShell x64 от имени администратора.
- Импортируем модуль NetTCPIP командой: Import-Module -Name C:\Windows\System32\WindowsPowerShell\v1.0\Modules\NetTCPIP -Verbose
- Все, мы подключили три модуля NetTCPIP, DnsClient, NetSecurity и можешь пользоваться командлетом Test-NetConnection.
- Проверим 80 порт у яндекса, открыт или нет. Результат работы команды:
TcpTestSucceeded = True означает, что 80-ый порт у yandex.ru открыт. Как видим команда успешно работает, возвращает True или False и ее можно использовать в своих скриптах.
На этом заканчиваю данную стать, в ней я ответил на вопрос как проверить порт через PowerShell на Windows 7. Как выяснилось это довольно просто. Если остались вопросы, замечания, предложения то пишите в комментариях. Буду рад обсудить.
С уважением, Александр Глебов | |
Очень большая просьба пройти этот опрос! | |
Если вам помогла данная статья, вступите пожалуйста в мою группу в контакте. |
Твитнуть |
|
Не получилось импортировать командлет данным способом
Выходит ошибка
PS C:\Windows\system32> Import-Module -Name C:\Windows\System32\WindowsPowerShell\v1.0\Modules\NetTCPIP -Verbose
Import-Module : The specified module ‘C:\Windows\System32\WindowsPowerShell\v1.0\Modules\NetTCPIP’ was not loaded becau
se no valid module file was found in any module directory.
At line:1 char:1
+ Import-Module -Name C:\Windows\System32\WindowsPowerShell\v1.0\Module …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (C:\Windows\Syst…odules\NetTCPIP:String) [Import-Module], FileNot
FoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand