Главная

Tuesday, 19 April 2022

Get-NetTCPConnection и Get-NetUDPEndpoint.

Всем привет.

Рассмотрим два командлета PowerShell Get-NetTCPConnection и Get-NetUDPEndpoint как инструменты сетевой диагностики. 

Get-NetTCPConnection - это командлет PowerShell, запуск которого без опций возвращает результат аналогичный netstat. Чтобы вывести список открытых портов, используйте опцию -State со значением Listen:

Get-NetTcpConnection -State Listen

Список открытых портов содержится в колонке LocalPort, запись «0.0.0.0» означает IPv4 адреса, а обозначение «::» относится к IPv6 адресам.

В следующей команде выводятся только действительно интересные свойства, также сделана сортировка по номеру открытых портов:

Get-NetTcpConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess | Sort-Object -Property LocalPort | Format-Table

Как в PowerShell узнать, какая программа прослушивает порт? В следующем примере будет получено имя процесса, связанного с каждым открытым портом:

Get-NetTcpConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess,@{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort-Object -Property LocalPort | Format-Table

Чтобы узнать, какая именно программа прослушивает определённый порт, используйте следующий код на примере для 135-го порта:

$port='135'

Get-NetTcpConnection -State Listen | Where-Object {$_.LocalPort -eq "$port"} | Select-Object LocalAddress,LocalPort,OwningProcess,@{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort-Object -Property LocalPort | Format-Table


В отличие от команды netstat в Windows, Powershell разделяет протоколы TCP и UDP на две разные команды: Get-NetTCPConnection и Get-NetUDPEndpoint. Рассмотрим далее работу командлета Get-NetUDPEndpoint. Командлет Get-NetUDPEndpoint получает текущую статистику для конечной точки UDP. Командлет возвращает свойства конечной точки UDP, например локальные и удалённые порты UDP. Если вы не укажете никаких параметров, командлет получит статистику для всех конечных точек UDP.

Get-NetUDPEndpoint сам по себе вернёт локальный адрес и локальный порт.

А эта команда покажет открытые на всех сетевых интерфейсах UDP порты:

Get-NetUDPEndpoint | Where-Object {($_.LocalAddress -eq "0.0.0.0") -or ($_.LocalAddress -eq "::")}

Чтобы просмотреть идентификатор процесса-владельца, добавьте поле OwningProcess.

Get-NetUDPEndpoint | Select-Object LocalAddress,LocalPort,OwningProcess | Sort-Object -Property LocalPort | Format-Table

Используйте следующую команду, чтобы отобразить имя процесса, открывшего UDP порт:

Get-NetUDPEndpoint | Select-Object LocalAddress,LocalPort,OwningProcess,@{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} |  Sort-Object -Property LocalPort | Format-Table

Успехов.
Слава Украине!

No comments:

Post a Comment

А что вы думаете по этому поводу?