TCP Port Ping с помощью PowerShell | Windows для системных администраторов

TCP Port Ping с помощью PowerShell

Любому администратору периодически приходится проверять доступность службы на  удаленном сервере путем проверки ответа от удаленного TCP  порта. Причем, все привыкли, что такую проверку быстрее всего выполнить с помощью команды telnet. Например, для проверки доступности SMTP службы ( по умолчанию отвечает на 25 TCP порту) на почтовом сервере достаточно выполнить команду telnet msk-msg01.winitpro.ru 25. Но начиная с Windows 7 клиент telnet выделен в отдельный компонент, который нужно устанавливать отдельно. Посмотрим, как выполнить аналогичное действие в PowerShell.

Готовый командлет для проверки сетевого соединения — Test-NetConnection – появился в PowerShell 4.0 (Windows 2012 R2, Windows 8.1и выше). Входит он в модуль NetTCPIP.

Совет. Проверить текущую установленную версию PowerShell можно командой $PSVersionTable.PSVersion $PSVersionTable.PSVersion

Значение 4 в столбце Major говорит о том, что на компьютере установлен PowerShell 4.0.

Проверим, открыт ли порт TCP 25 (SMTP протокол) на почтовом сервере с помощью Test-NetConnection:

Test-NetConnection -ComputerName msk-msg01 -Port 25

Примечание. С помощью командлета Test-NetConnection можно проверить только TCP соединение, для проверки доступности UDP порта он не применим.

В сокращенном виде аналогичная команда выглядит так:

TNC msk-mail1 -Port 25

Test-NetConnection - прверка ответа от TCP порта Разберем результат команды:

ComputerName           : msk-msg01
RemoteAddress          : 10.10.1.7
RemotePort             : 25
InterfaceAlias         : CORP
SourceAddress          : 10.10.1.70
PingSucceeded          : True
PingReplyDetails (RTT) : 0 ms
TcpTestSucceeded       : True

Как мы видим, указанный сервер доступен по ICMP (PingSucceeded = True) и 25 TCP порт также отвечает (RemotePort=25, TcpTestSucceeded= True)

Примечание.  В некоторых случаях может оказаться, что PingSucceeded=False, а TcpTestSucceeded= True. Скорее всего означает, что на удаленном сервере запрещен ICMP Ping.

Если нужна только информация по доступности порта, в более лаконичном виде проверка может быть выполнена так:

TNC msk-mail1 -Port 25 -InformationLevel Quiet

TNC InformationLevel Quiet

Следующая команда позволить проверить доступность определенно порта на множестве серверов, список которых хранится в текстовом файле servers.txt. Нас интересуют сервера, где искомая служба не отвечает:

Get-Content c:\Distr\servers.txt |  where { -NOT (Test-Netconnection $_ -Port 25  -InformationLevel Quiet)}| Format-Table -AutoSize

Совет. В предыдущих версиях PowerShell проверить доступность TCP порта можно так:

(New-Object System.Net.Sockets.TcpClient).Connect(‘msk-msg01’, 25)
New-Object System.Net.Sockets.TcpClient

Еще записи по теме: PowerShell
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 3

Оставить комментарий
  1. Dima | 09.09.2016

    Появиться в 4-й версии то он появился, но для Windows 7 его нет, к сожалению. Хотя ничего не мешает и 4ю и 5-ю версию себе поставить на «семерку».

    Ответить
    • Виктор | 12.09.2016

      У меня в ps v5.0 на windows 7 нету

      Ответить
    • itpro | 21.09.2016

      Можно попробовать его импортировать с 2012 сервера / win 8 как-то так:

      $rsession = New-PSSession -ComputerName msk-fs02
      Import-Module NetTCPIP -PSSession $rsession

      Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)



MAXCACHE: 0.24MB/0.01615 sec