powershellwindows

Výpis netstat spolu s procesem

Pro výpis aktivních TCP připojení spolu s informacemi o procesu, který je vlastníkem každého připojení, můžete použít následující příkaz v PowerShellu:

Get-NetTCPConnection -OwningProcess (Get-Process).Id -ErrorAction SilentlyContinue |
    Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, @{Name='ProcessName';Expression={(Get-Process -Id $_.OwningProcess).Name}} -ErrorAction SilentlyContinue |
    Format-Table -AutoSize

Tento příkaz využívá cmdlet Get-NetTCPConnection k získání informací o všech aktivních TCP připojeních, včetně ID procesu, který je vlastníkem každého připojení. Poté pomocí Select-Object přidává nový sloupec “ProcessName”, který získává název procesu na základě jeho ID. Výstup je formátován do tabulky pro lepší čitelnost.

nebo pouze pro DNS:

Get-NetTCPConnection -OwningProcess (Get-Process -Name dns).Id |
    Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, @{Name='ProcessName';Expression={(Get-Process -Id $_.OwningProcess).Name}} |
    Format-Table -AutoSize

Tento příkaz filtruje pouze připojení, která jsou vlastněna procesem s názvem “dns”. Můžete změnit “dns” na název jiného procesu, pokud chcete zobrazit připojení pro jiný proces.

Příklad filtrování: (IP adresy jiné než 0.0.0.0, ::1, 127.0.0.1)

Get-NetTCPConnection | Where-Object { ($_.RemoteAddress -notlike "0.0.0.0") -and ($_.RemoteAddress -notlike "::*") -and ($_.RemoteAddress -notlike "127.0.0.1")} |
      Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, @{Name='ProcessName';Expression={$("["+$_.OwningProcess+"] "+(Get-Process -Id $_.OwningProcess).Name)}} |
      Format-Table -AutoSize

Tento příkaz filtruje připojení, která mají vzdálenou adresu jinou než localhost nebo 0.0.0.0.