Используя netstat -a -o -n
я могу получить список портов и PID
Затем мне нужно зайти в диспетчер задач, добавить PID и посмотреть, кто это. (довольно раздражает)
Мне было интересно, есть ли команда CMD, которая делает все это (используя find
, for
, powershell
)
чтобы я мог получить имя процесса
решение1
Решение
Используйте -b
параметр:
-b Displays the executable involved in creating each connection or
listening port. In some cases well-known executables host
multiple independent components, and in these cases the
sequence of components involved in creating the connection
or listening port is displayed. In this case the executable
name is in [] at the bottom, on top is the component it called,
and so forth until TCP/IP was reached. Note that this option
can be time-consuming and will fail unless you have sufficient
permissions.
ПримечаниеКоманда netstat -b
не будет выполнена, если ее не запустить из командной строки с повышенными привилегиями.
Обходной путь
Отфильтруйте список процессов и найдите интересующий вас PID:
tasklist | findstr /c:"PID"
Альтернативное решение
Вместо этого можно использовать Tcpvcon.exe
. Права администратора не требуются.
Tcpvconиспользование аналогично встроенной
netstat
утилите Windows.
Usage: tcpvcon [-a] [-c] [-n] [process name or PID]
-a Show all endpoints (default is to show established TCP connections).
-c Print output as CSV.
-n Don't resolve addresses.
решение2
Я думаю, вы ищетеTCPПросмотриз SysInternals.
решение3
Вот пример использования Windows FOR
для анализа netstat
выходных данных, а затем DO
tasklist
с /fi
фильтром по pid для отображения имени процесса.
Последняя находка — удаление tasklist
заголовков.
FOR /F "usebackq tokens=5 delims= " %i IN (`netstat -ano ^|find "443"`) DO @tasklist /fi "pid eq %i" | find "%i"
печатает записи вывода как
tomcat8.exe.x64 4240 Services 0 931,864 K
Дополнительные поля netstat
можно добавить, добавив токены.
решение4
Попробуйте использовать это...
Имя процесса с отметкой времени :) в однострочнике... нет необходимости писать скрипты, быстро и просто...
Вы можете изменить параметр SYN_SENT на ESTABLISHED или LISTENING
filter timestamp {"$(Get-Date -Format G): $_"};netstat -abno 1 | Select-String -Context 0,1 -Pattern LISTENING|timestamp
filter timestamp {"$(Get-Date -Format G): $_"};netstat -abno 1 | Select-String -Context 0,1 -Pattern SYN_SENT|timestamp