2019-01-24

PowerShell: Вывод списка открытых TCP-портов

Как вывести список открытых TCP-портов с помощью PowerShell?



Содержание




Команда


Просмотреть список всех открытых TCP-портов и соединений можно с помощью командлета Get-NetTCPConnection.

Get-NetTCPConnection


Если в выводе отсутствует информация о процессах (PID), к которым относятся открытые порты, достаточно просто увеличить ширину окна консоли, и выполнить команду заново.


Или можно задать автоподстройку размера вывода. Работает она в пределах разумного, за счет свободного пространства между столбцами выводимой таблицы.

# Вывод информации о TCP-портах с автоподстройкой размера вывода
Get-NetTCPConnection | Format-Table -AutoSize


При малых окнах размерах окна PowerShell, всю информацию можно получить выполнив вывод в виде списка.

# Вывод информации о TCP-портах в виде списка
Get-NetTCPConnection | Format-List



Список Прослушиваемых Портов


Получить список прослушиваемых (ожидающих соединения) TCP-портов можно с помощью следующей команды:

# Вывод списка прослушиваемых TCP-портов
Get-NetTCPConnection -State Listen 



Список Портов с Установленным Соединением


Получить список TCP-портов с установленным соединением можно с помощью команды:

# Вывод списка TCP-портов с установленным соединением
Get-NetTCPConnection -State Established



Взаимосвязанные Процессы


В стандартном выводе командлета Get-NetTCPConnection присутствуют только PID процесса, представленный полем OwningProcess. Получить более подробную информацию о процессе указанного PID можно так:

# Вывод взаимосвязанных процессов
Get-Process -Id (Get-NetTCPConnection -State Established).OwningProcess


В данном примере, команда получения списка TCP-портов, встроена в команду получения списка процессов по указанному PID. Это базовый вывод, командлета Get-Process. Преобразуем вывод к формату ID-процесса, Имя процесса, Путь до исполняемого файла.

# Вывод пути до исполняемых файлов взаимосвязанных процессов
Get-Process -Id (Get-NetTCPConnection -State Established).OwningProcess | Format-Table Id, ProcessName, Path


В полученном списке, можно заметить процессы с отсутствующими путями. Выполним эту же команду,в командной оболочке PowerShell, запущенной от имени администратора.



Взаимосвязанные Службы


За ID-процесса (поле OwningProcess) может скрываться не просто процесс, а служба. Вывести список взаимосвязанных служб можно с помощью следующей команды:

# Вывод взаимосвязанных служб
Get-WmiObject Win32_Service | Where-Object -Property ProcessId -In (Get-NetTCPConnection).OwningProcess | Where-Object -Property State -eq Running | Format-Table ProcessId, Name, Caption, StartMode, State, Status, PathName


Команда получилась длинной. Немного сократим ее за счет алиасов.

# Вывод взаимосвязанных служб
gwmi Win32_Service | ? Proc* -In (Get-NetTCPConnection).OwningProcess | ? State -eq Running | ft Proc*,N*,Cap*,Sta*,PathN*



Итог


В статье рассмотрено: Как вывести список открытых TCP-портов в PowerShell? Как вывести список прослушиваемых TCP-портов в PowerShell? Как вывести список TCP-портов с установленным соединением в PowerShell? Как вывести список взаимосвязанных процессов открытых TCP-портов в PowerShell? Как вывести список взаимосвязанных служб/сервисов открытых TCP-портов в PowerShell?

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

Отправка комментария