işlem adı ile netstat?


46

Kullanarak netstat -a -o -n port ve PID listesini alabilirim

o zaman görev yöneticisine gidip PID'i ekleyip kim olduğunu görmem gerekiyor. (oldukça sinir bozucu)

görüntü tanımını buraya girin

Hepsini yerine getiren bir CMD komutu olup olmadığını merak oldu (kullanarak find, for, powershell)

işlem ismini alabilmem için


admin olarak netstat -b, örneğin netstat -abon. Ve exe adı altında
barlop

Yanıtlar:


56

Çözüm

-bParametreyi kullanın :

  -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.

Notnetstat -b istemi yükseltilmiş komuta çalıştırmak sürece komut başarısız olur.

Geçici çözüm

İşlem listesini filtreleyin ve ilgilendiğiniz PID'yi bulun:

tasklist | findstr /c:"PID"  


Alternatif çözüm

Bunun Tcpvcon.exeyerine kullanabilirsiniz . Yönetici hakları gerekmez.

Tcpvcon kullanımı, yerleşik Windows netstatyardımcı programına benzer.

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.

1
sen adamsın.
Royi Namir

iyi cevap, sadece ms /? dokümantasyon bile "bu seçenek zaman alabilir" diyor! ve bu tamamen zaman alan pencerelerin aptallığı. Linux netstat, yürütülebilir adını hızlıca gösteriyor. Ayrıca
linux'un

8

SysInternals'tan TCPView'ü aradığınızı düşünüyorum .


Hepsini yapan bir CMD komutu olup olmadığını merak ediyordum
Royi Namir

Devam et
TCPView

Ah tamam. belki birisinin zaten kullanarak, vb bulmak için yaptığını düşündüm
Royi Namir

Yapması çok zor olmamalı .. Bahse girerim robvanderwoude.com'un üzerinde bir şeyler olduğu konusunda. TCPView Sayfası Başına - "TCPView indirme işlemi, aynı işlevselliğe sahip bir komut satırı sürümü olan Tcpvcon'u içerir."
Leptonator

Çok iyi alet paketi .. msys ve sis olmasaydı, bir nix kutusu kullanıyor olurdum. :)
Eddie B

2

İşte kullanarak pencereler için bir örnek FORayrıştırma için netstatdaha sonra çıkış DO tasklistile /fiişlem adını göstermek için pid üzerinde filtrenin.

Son tasklistbulucu başlıkları kaldırmaktır .

FOR /F "usebackq tokens=5 delims= " %i IN (`netstat -ano ^|find "443"`) DO @tasklist /fi "pid eq %i" | find "%i"

gibi çıktıları yazdırır yazdırır

tomcat8.exe.x64               4240 Services                   0    931,864 K

netstatJeton ekleyerek alanlardan eklenebilir.


Bu çözümün avantajları aşağıdakileri içerir: 1. findBağlantı noktalarını filtrelemek için kullanma (bunun aksine, netstat -bdoğrudan işlem adı sağlayabilir, ancak manuel olarak arama yapmak için çıktısını kullanmak ağrılı ve hataya açıktır); 2. Yalnızca Windows yerel komutlarını kullanarak bu daha esnek ve bağımsızdır.
Yingyu SİZE

1
Olası bir gelişme: 1. kullanımı findstrile /Ryerine seçeneği finddaha iyi arama için düzenli ifade kullanmak; 2. sadece yerel portu:443 *[[0-9]" filtrelemek için desen olarak kullanmak . Bütün komut olabilirFOR /F "usebackq tokens=5 delims= " %i IN (`netstat -ano ^|findstr /R /C:":443 *[[0-9]"`) DO @tasklist /fi "pid eq %i" | findstr "%i"
Yingyu SİZİN

@DavidPostill veya @mark " netstatBelirteçler ekleyerek ek alanlardan eklenebilir."
Yves Schelpe

2

PS kullanmaya meraklıysanız, bu kodu çatallayabilirsiniz (not: süper basit)

$nets = netstat -ano | select-string LISTENING
foreach($n in $nets){
    # make split easier PLUS make it a string instead of a match object:
    $p = $n -replace ' +',' '
    # make it an array:
    $nar = $p.Split(' ')
    # pick last item:
    $pname = $(Get-Process -id $nar[-1]).ProcessName
    $ppath = $(Get-Process -id $nar[-1]).Path
    # print the modified line with processname instead of PID:
    $n -replace "$($nar[-1])","$($ppath) $($pname)"
}

Tam çalıştırılabilir bir yol almak Pathyerine deneyebileceğinizi unutmayın; ProcessNameancak sistem hizmetleriyle de çalışmaz. Ayrıca, ProcessNamePID değerini değiştirmek yerine satırın sonuna eklemek isteyebilirsiniz .

Tadını çıkar ;)


1

Bunu kullanmaya çalış ...

Zaman damgalı süreç adı :) oneliner'da ... hızlı ve kolay komut dosyası yazmanıza gerek yok ...

SYN_SENT paragrafını ESTABLISHED veya LISTENING ile değiştirebilirsiniz.

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

Bunu gözlemlemek istediğim ip: port üzerindeki bir desen ile kullandım. Harika pasaj!
Alex,

0

Çok güzel Erik Bitemo! Yol için bir değişken eklemeyi düşünüyordum, ancak tanımlanmamış olmasına rağmen zaten sahip olduğunuzu anladım. Yeniden kullandığım kod şuydu:

$nets = netstat -ano |select-string LISTENING;
foreach ($n in $nets)
    {
# make split easier PLUS make it a string instead of a match object
    $p = $n -replace ' +',' ';
# make it an array
    $nar = $p.Split(' ')
# pick last item...
    $pname = $(Get-Process -id $nar[-1]).ProcessName
    $ppath = $(Get-Process -id $nar[-1]).Path;
# print the modified line with processname instead of PID
    $n -replace "$($nar[-1])","$($ppath) $($pname)" | where {$pname -like "*GMSVP*"}
     }

Biraz farklı 2 astar kullandığım bir uygulamanın süreçlerini ve servislerini bulmaya çalışıyordum.

Get-Service | select status,name,displayname,servicename | where {($_.DisplayName -like "myserv*") -or ($_.servicename -like "post*")} | ft -auto

Get-Process | select id, processname,cpu,path,description | where {$_.path -like "*myserv*"} | ft -auto

Öyle dilerseniz, size olan yaklaşım Cevabınız ve konsantresi silin kurabilen, belki düzeltme içerecek şekilde Erik'in sorusunu düzenlenebilir GetServiceve Get-Process.
flolilo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.