Get-NetTCPConnection - Verbindungen per PowerShell - netstat PowerShell Alternative inkl. DNS-Name und GRUPPIERT nach Anwendung

Aktive Netzwerkverbindungen mit netstat und PowerShell anzeigen – netstat PowerShell Alternative

In Windows kann man aktuell offene lokale Netzwerkverbindungen z.B. mit dem CMD-Befehl „netstat“ (network statistics bzw. „Netzwerkstatistiken“) oder mit dem PowerShell Befehl „Get-NetTCPConnection“ anzeigen lassen.

Hier zeige ich anhand einiger Beispiele, wie man diese Befehle verwendet, kombiniert und erweitert und wie die netstat PowerShell Alternative aussieht.

Inhalt

Aktive Netzwerkverbindungen mit netstat und PowerShell anzeigen, kombinieren und erweitern. Netstat PowerShell Alternative

netstat in einem CMD-Fenster

netstat – Verbindungen anzeigen (IP und Port nicht auflösen)

-o Anzeige der PID (Prozess-ID)
-n zeigt IP+Portnummer statt Zielhostname+Portname
-p für Protokoll. In dem Fall werden nur TCP-Verbindungen angezeigt.

netstat -anop TCP

CMD - netstat -anop TCP - Aktive Verbindungen - Win10

Programm zur PID finden

Möchte man nun wissen, welches Programm dort die Ports geöffnet hat, dann muss man die in netstat angezeigte PID wie folgt auflösen (xxxx durch eigene PID ersetzen)

tasklist | findstr "xxxx"

CMD - tasklist - findstr PID - Win10

netstat – Verbindungen anzeigen (IP und Ports auflösen)

Da hier Schalter -n weggelassen wird, werden Zielhostnamen+Portnamen und nicht Ziel-IPs+Portnummer angezeigt.
Die Ausgabe ist etwas langsamer.

netstat -aop TCP

CMD - netstat -aop TCP - Aktive Verbindungen - Win10

netstat – Nur Verbindungen mit bestimmten Port anzeigen

Prozesse und deren ID auflisten, wo bestimmter Port (hier 49780) vorkommt.

netstat -aop TCP | findstr "49780"

CMD - netstat -aop TCP - findstr - Aktive Verbindungen - Win10

netstat – Verbindungen anzeigen (inkl. Prozess-Name)

Mit diesem Befehl werden durch den -b Schalter, auch die Programme bzw. die Namen angezeigt, die die Verbindung geöffnet haben.
Der Befehl muss in einer als Admin geöffneten CMD-Konsole ausgeführt werden.
Die Ausgabe ist etwas unübersichtlich, da die EXE in den zusätzlichen Zeilen dargestellt werden.

netstat -abop TCP

CMD - netstat -abop TCP - Aktive Verbindungen - Win10

Verbindungen auf Änderungen überwachen (netstat PowerShell-Schleife)

Das Skript läuft endlos (bis es z.B. per Strg+C gestoppt wird. Offene Ports werden ständig auf Änderungen überwacht. Nur bei Änderungen werden neue offene Netzwerkverbindungen ausgegeben und Änderungen zum vorigen Zustand angezeigt.

Am einfachsten in eine PowerShell ISE kopieren und mit F5 ausführen.

# Prüft Verbindungen (bzw. Zeilen mit einem Suchbegriff) auf Änderungen
# -------------------------------------------------------------

$n1=""
$n2=""

do {
$nhead = netstat -aop TCP | findstr "Proto*" # Header für die Ausgabe speichern.

# Netstat aufrufen und Zeichenfolge suchen
# (Für Späteres "if" muss "Out-String" sein, für "Compare-Object" darf aber nicht. Deshalb Out-String im If-Block.)

# Diese Kriterien anpassen (ob/was gesucht werden soll)

# Zielhostname+Port aufgelöst, nichts gefiltert.
$n1 = netstat -aop TCP

# Zielhostname+Port aufgelöst. Zeigt nur Zeilen mit DC im Namen.
#$n1 = netstat -aop TCP | findstr "DC*"

# Zielhostname+Port aufgelöst. Es wird auf Port oder PID 9012 gefiltert.
#$n1 = netstat -aop TCP | findstr "9012"

# Ziel-IP + numerisch Port. Gefiltert auf IP-Bereich
#$n1 = netstat -anop TCP | findstr "192.168.178.*"

# Wenn sich Ausgabe von Netstat ($n1) geändert hat, dann markieren/ausgeben
if (($n1 | Out-String) -ne ($n2 | Out-String)) {
# Ausgabe (nur bei Änderungen)
Get-Date
Write-Output ""

$nhead
$n1

#Write-Host "`n||||||||||| Die Werte haben sich geändert |||||||||||" -ForegroundColor Cyan
try {Compare-Object $n2 $n1 |
ft -a -property `
@{Expression={$_.InputObject};Label="`nDiese Zeilen haben sich geändert"},
@{Expression={$_.SideIndicator};Label="=> Eingefügt `n<= Entfernt"}
# => heißt wohl dazu gekommen, <= heißt wohl wurde entfernt.
}
catch {Write-Output "`n`nAnzeige der Änderungen nicht möglich (vermutlich weil ein Vergleichswert = null ist`n"}

Write-Output "=============================================================================================`n"
}


#else { # Block auskommentieren, falls nur auf Änderungen reagiert werden soll
#Get-Date
#Write-Host ""
#
#$nhead | Out-String
#$n1 | Out-String
#
#Write-Output "`n=============================================================================================`n"
#}

# Aktuelle Ausgabe (für den nächsten Vergleich) speichern
$n2 = $n1

#Write-Host "`n=============================================================================================`n"
#sleep -Milliseconds 100
}
while ($exit -ne "$true") # Schleife läuft immer, solange $exit nicht $true

 

Aktive Netwerkverbindungen auf Änderungen überwachen - netstat - PowerShell

Netzwerkverbindungen per PowerShell anzeigen (netstat Alternative)

Verbindungen per PowerShell (netstat PowerShell Alternative, aber ohne Hostname)

# Verbindungen per PowerShell (netstat Alternative, aber ohne Auflösung der IP zum Hostnamen)
Get-NetTCPConnection | FT -Auto CreationTime, LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess

netstat PowerShell Alternative - Get-NetTCPConnection - Verbindungen per PowerShell - netstat Alternative, aber ohne Hostname

Verbindungen per PowerShell (netstat PowerShell Alternative ohne Hostname, Prozess-ID wird zum Prozessnamen aufgelöst)

# Verbindungen inkl. Anwendung (erst in neueren Versionen, da OwningProcess, also die ID erst später vorhanden ist)
Get-NetTCPConnection | FT -Auto CreationTime, LocalAddress, LocalPort, RemoteAddress, RemotePort, State, @{label="ID";Expression={$_.OwningProcess}}, @{label="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}}

Get-NetTCPConnection - Verbindungen per PowerShell - ohne Hostname - Prozess-ID wird zum Prozessnamen aufgelöst

Verbindungen per PowerShell (netstat PowerShell Alternative inkl. DNS-Name und Anwendung)

# Verbindungen inkl. DNS-Name und Anwendung (erst in neueren Versionen, da OwningProcess, also die ID erst später vorhanden ist)

#Puffer (sonst werden z.B. Spalten rechts abgeschnitten in der Konsolen- und TXT-Ausgabe etc.)
$buffer = $host.ui.RawUI.BufferSize; $buffer.width = 3000; $buffer.height = 3000; $host.UI.RawUI.Set_BufferSize($buffer)

Get-NetTCPConnection | Select -Property CreationTime, LocalAddress, LocalPort, RemoteAddress, RemotePort, State, @{label="DNS-Name";Expression={($_.RemoteAddress | Resolve-DNSName).NameHost | Select -First 1}}, @{label="PID";Expression={$_.OwningProcess}}, @{label="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | FT -Auto

Get-NetTCPConnection - Verbindungen per PowerShell inkl. DNS-Name und Anwendung

Verbindungen per PowerShell (netstat PowerShell Alternative inkl. DNS-Name und GRUPPIERT nach Anwendung)

# Verbindungen inkl. DNS-Name und GRUPPIERT nach Anwendung (erst in neueren Versionen, da OwningProcess, also die ID erst später vorhanden ist)

#Puffer (sonst werden z.B. Spalten rechts abgeschnitten in der Konsolen- und TXT-Ausgabe etc.)
$buffer = $host.ui.RawUI.BufferSize; $buffer.width = 3000; $buffer.height = 3000; $host.UI.RawUI.Set_BufferSize($buffer)

Get-NetTCPConnection | Select -Property CreationTime, LocalAddress, LocalPort, RemoteAddress, RemotePort, State, @{label="DNS-Name";Expression={($_.RemoteAddress | Resolve-DNSName).NameHost | Select -First 1}}, @{label="PID";Expression={$_.OwningProcess}}, @{label="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort "Process" | FT -Auto -GroupBy "Process"

Get-NetTCPConnection - Verbindungen per PowerShell - netstat PowerShell Alternative inkl. DNS-Name und GRUPPIERT nach Anwendung

 

Ein Gedanke zu „Aktive Netzwerkverbindungen mit netstat und PowerShell anzeigen – netstat PowerShell Alternative“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert