Asaad - stock.adobe.com
Netzwerk-Troubleshooting: 18 wichtige PowerShell-Cmdlets
Fehleranalysen in Windows-Netzwerken kosten Admins oft viel Zeit. Diese PowerShell-Cmdlets beschleunigen die Prüfung von IP-Konfigurationen, Routing, Ports und der Namensauflösung.
Die Windows PowerShell hat das Troubleshooting von Netzwerken unter Windows grundlegend revolutioniert. Ob effizientes Konfigurationsmanagement, automatisierte Softwareinstallation oder fortgeschrittenes Scripting – die PowerShell ist heute ein unverzichtbares Werkzeug für jeden Systemadministrator. Insbesondere bei der Analyse und Fehlersuche von Windows-Netzwerkeinstellungen und -diensten zeigt das leistungsstarke Tool seine volle Stärke.
Dieser Artikel beschreibt 18 PowerShell-Cmdlets, die beim Netzwerk-Troubleshooting helfen. Die erste Gruppe von Cmdlets zeigt, wie sich Netzwerkinformationen anzeigen lassen, sodass Administratoren überprüfen können, ob diese korrekt sind. Die zweite Gruppe behandelt die Namensauflösung und die letzte Kategorie befasst sich mit der Verwaltung von Netzwerkdiensten per PowerShell.
Dieser Artikel dient nicht dazu, die PowerShell von Grund auf zu erlernen, fasst aber zusammen, wie Cmdlets ausgeführt werden. Die grundlegende PowerShell-Syntax folgt dem Schema Verb-Substantiv, gefolgt von möglichen Parametern. Das Cmdlet Get-Date beispielsweise zeigt das aktuelle Datum und die Uhrzeit des Systems an.
Nützliche PowerShell-Tricks für Administratoren
- Case-Insensitivity: PowerShell-Cmdlets sind case-insensitiv, das heißt, sie unterscheiden nicht zwischen Groß- und Kleinschreibung. Zum Beispiel funktioniert get-netipaddress genauso wie Get-NetIPAddress).
- Formatierung: Verwenden Sie das Cmdlet Format-Table (oder kurz ft), um die Ausgabe von Befehlen übersichtlich in Spalten zu formatieren.
- Historie: Mit der Pfeil-nach-oben-Taste scrollen Sie durch die zuletzt verwendeten Befehle.
- Tab-Autovervollständigung:
- Drücken Sie die Tabulatortaste nach Verben, um zu sehen, welche Substantive sich kombinieren lassen.
- Wenn Sie die Tabulatortaste nach einem Parameter-Bindestrich (-) drücken, werden die verfügbaren Parameter angezeigt.
- Drücken Sie die Tabulatortaste nach einem Parameter, um die gültigen Parameterwerte zu sehen.
Anzeigen von Netzwerkeinstellungen
Die PowerShell unterstützt Admins bei der Anzeige oder Überprüfung vorhandener Netzwerkeinstellungen als Teil des Troubleshootings. Mit den folgenden Cmdlets wird die aktuelle Konfiguration angezeigt.
1. Get-NetIPAddress ( IP-Adresseinstellungen anzeigen)
Häufig besteht der erste Schritt beim Netzwerk-Troubleshooting darin, die IP-Adresskonfiguration des Hosts zu kontrollieren. Während viele Administratoren ipconfig nutzen, um diese Informationen anzuzeigen, erfüllt das Cmdlet Get-NetIPAddress denselben Zweck.
In Abbildung 1 sehen Sie als Ausgabe die gekürzte IPv6-Adresse des Systems.
Um nur IPv4-Adressen übersichtlich anzuzeigen, nutzen Sie:
Get-NetIPAddress -AddressFamily IPv4 | Format-Table
2. Get-NetIPConfiguration ( IP-Adressdetails ausgeben)
Alternativ können Sie das Cmdlet Get-NetIPConfiguration verwenden, um Details zu den IP-Adresseinstellungen anzuzeigen. Ein wichtiges Merkmal dieses Cmdlets ist dessen Möglichkeit, gezieltere Informationen zu liefern. Abhängig von den Parametern, die Admins angeben, enthält die Ausgabe Informationen für bestimmte Schnittstellen und mit verschiedenen Details.
Abbildung 2 zeigt das Cmdlet in seiner Grundform.
Beachten Sie die Werte InterfaceAlias und InterfaceIndex. Diese Werte sind gängige Bezeichner für den Verweis auf die Schnittstelle. Beispielsweise ist Get-NetIPConfiguration -InterfaceAlias Ethernet das Cmdlet für eine Schnittstelle mit dem Alias Ethernet. Admins können auch den Parameter -Detailed für zusätzliche Informationen hinzufügen. Es ist sogar möglich, die Parameter -InterfaceAlias und -Detailed zu kombinieren, um detaillierte Informationen zu einer bestimmten Schnittstelle zu erhalten.
3. Get-NetAdapter (Einstellungen der Netzwerkschnittstelle anzeigen)
Es kann hilfreich sein, spezifische Informationen über die Netzwerkkarte selbst statt über die ihr zugeordnete logische Adressierung anzuzeigen. Nutzen Sie das Cmdlet Get-NetAdapter, um die Attribute der Schnittstelle anzuzeigen. Dazu gehören Name, Beschreibung, Schnittstellenindex, Status, MAC-Adresse und Verbindungsgeschwindigkeit.
Abbildung 3 zeigt die Informationen zur Netzwerkschnittstelle.
4. Enable-NetAdapter (Schnittstelle aktivieren)
Möglicherweise stellen Sie fest, dass ein anderer Administrator die Netzwerkschnittstelle deaktiviert hat oder dass jemand die Schnittstelle als Failover konfiguriert und nicht wieder aktiviert hat. In diesem Fall lässt sich die Schnittstelle mit dem Cmdlet Enable-NetAdapter wieder aktivieren:
Enable-NetAdapter -Name „Ethernet”
5. Disable-NetAdapter (Schnittstelle deaktivieren)
Das Deaktivieren der Schnittstelle erfolgt mit dem Cmdlet Disable-NetAdapter. Im folgenden Beispielvideo sehen Sie, wie sich der Zustand des Adapters in der Statusspalte ändert. Achten Sie auch auf die Bestätigungsoptionen, die mit dem Cmdlet angezeigt werden. Um die Abfrage im Skript zu unterdrücken, nutzen Admins den Parameter -Confirm, So deaktivieren Sie den Netzwerkadapter ohne Bestätigungsaufforderung:
Disable-NetAdapter -Name "Ethernet" -Confirm:$false
Im folgenden Beispielvideo sehen Sie, wie sich der Zustand des Adapters in der Statusspalte ändert. Achten Sie auch auf die Bestätigungsoptionen, die mit dem Cmdlet Disable-NetAdapter angezeigt werden.
6. Get-NetRoute (Routing-Tabelle anzeigen)
Wenn Admins sicher sind, dass die IP-Adresseinstellungen des Systems korrekt sind und die Netzwerkschnittstelle reagiert, müssen sie unter Umständen die Routing-Tabelle überprüfen. Statt des älteren Befehls route sollten Sie das Cmdlet Get-NetRoute verwenden.
In Abbildung 4 sehen Sie die Informationen der Routing-Tabelle auf einem Laborcomputer.
7. Test-Connection (Konnektivität testen)
Der Ping-Befehl dürfte das am weitesten verbreitete Tool für das Netzwerk-Troubleshooting sein. Die PowerShell verfügt über ein eigenes Cmdlet für Ping: Test-Connection. Die Syntax und die Antworten sind ähnlich wie bei dem bekannteren Tool.
Abbildung 5 zeigt sowohl ping als auch Test-Connection, um die Netzwerkkonnektivität zu überprüfen.
Das Cmdlet Test-Connection bietet viele nützliche Parameter, die über die Funktionalität von Ping hinausgehen. Zwei nützliche Optionen sind -Quiet und die Möglichkeit, mehrere Verbindungen gleichzeitig zu testen.
Wie in Abbildung 6 zu sehen, wird im Quiet-Modus nur das Ergebnis des Verbindungstests angezeigt.
Um mehrere Verbindungen zu testen, trennen Sie die Host-Namen oder IP-Adressen durch Kommas (Abbildung 7).
Test-Connection -ComputerName "google.com", "bing.com"
8. Test-NetConnection (erweiterte Verbindungs- und Portprüfung)
Admins können auch Test-NetConnection für ähnliche Diagnoseinformationen einsetzen. Dieses Cmdlet dient im administrativen Alltag als moderner Ersatz für das klassische Telnet, um gezielt zu prüfen, ob ein bestimmter Netzwerkport auf einem entfernten System antwortet.
Test-NetConnection -ComputerName „google.com” -Port 443
Liefert die Verbindung in der Ausgabe den Wert TcpTestSucceeded : True zurück, ist der Port über das Netzwerk erreichbar.
Verbindungen, Protokolle und Namensauflösung
Die Namensauflösung ist ein wichtiger Bestandteil des Networkings, da sie einprägsame Namen mit schwer zu merkenden IP-Adressen verknüpft. Es ist unbedingt erforderlich, dass das System, das die Administratoren untersuchen, Namen und Dienste über einen DNS-Server auflösen kann.
9. Get-NetTCPConnection (Bestehende TCP-Verbindungen testen)
Eine weitere Konnektivitätsprüfung betrifft die Anzeige bestehender Verbindungen zum Server. Dazu dient das Cmdlet Get-NetTCPConnection, das den Befehl netstat ersetzt. Die Ausgabe dieses Befehls kann je nach den aktuellen Verbindungen zum System und den darauf laufenden Netzwerkdiensten sehr umfangreich sein.
Eine Möglichkeit, den Ergebnisbereich einzuschränken, besteht darin, die aktuellen Verbindungen anhand einer bestimmten Portnummer abzufragen. Vielleicht sind Administratoren an Ergebnissen zum TCP-Port 135 interessiert. In diesem Fall können sie den Parameter -LocalPort verwenden, wie in Abbildung 8 zu sehen ist.
Get-NetTCPConnection -LocalPort 135
Weitere Parameter sind -State und -RemoteAddress sowie eine Reihe anderer Optionen.
10. Get-NetUDPEndpoint (Aktive UDP-Verbindungen prüfen)
Da Get-NetTCPConnection systembedingt nur TCP-Verbindungen anzeigt, wichtige Netzwerkdienste wie DNS (Port 53) oder DHCP (Port 67/68) im Kern aber auf dem verbindungslosen UDP-Protokoll basieren, ist das Cmdlet Get-NetUDPEndpoint beim Troubleshooting die notwendige Ergänzung für eine vollständige Protokollanalyse:
Get-NetUDPEndpoint -LocalPort 53
11. Resolve-DnsName (Funktionsfähigkeit der Namensauflösung prüfen)
Versuchen Sie zunächst, eine IP-Adresse manuell mit dem Cmdlet Resolve-DnsName aufzulösen. Dieses Cmdlet kann den Befehl nslookup als Tool für Admins ersetzen oder ergänzen.
Abbildung 9 zeigt die Ausgabe des Cmdlets Resolve-DnsName.
12. Get-DnsClient (Status des DNS-Clients ermitteln)
Überprüfen Sie als Nächstes den Status der DNS-Clientsoftware auf dem lokalen Computer. Das Cmdlet Get-DnsClient liefert diese Informationen, wie in Abbildung 10 dargestellt.
Um eine bestimmte Netzwerkschnittstelle abzufragen, verwenden Sie InterfaceIndex oder InterfaceAlias.
13. Get-DnsClientCache (DNS-Cache anzeigen)
Beim Troubleshooting von clientseitigen Problemen der Namensauflösung empfiehlt es sich oft, den DNS-Cache zu löschen. Obwohl der Cache den Prozess der Namensauflösung normalerweise optimiert, kann er unter Umständen fehlerhafte oder veraltete Informationen enthalten. Das hat zur Folge, dass die Namensauflösung fehlschlägt oder falsche Ergebnisse liefert. Admins verwenden häufig den Befehl ipconfig /displaydns, um den Cache anzuzeigen. In der PowerShell dient dazu dieses Cmdlet:
Get-DnsClientCache
14. Clear-DnsClientCache (DNS-Cache löschen)
Wenn sich der Cache als Fehlerquelle herausstellt, muss er geleert werden. Das Cmdlet Clear-DnsClientCache ist das funktionale Äquivalent zum älteren Befehl ipconfig /flushdns. Das Cmdlet liefert zwar keine sichtbaren Ergebnisse in der Konsole zurück, der Cache wird jedoch sofort im Hintergrund bereinigt.
Das folgende Video veranschaulicht, wie sich der Cache anzeigen und löschen lässt.
15. Get-DnsClientServerAddress (Konfigurierte DNS-Server anzeigen)
Clientrechner versuchen manchmal, Namen mithilfe von ungültigen DNS-Servern aufzulösen. Mit dem Cmdlet Get-DnsClientServerAddress lassen sich die konfigurierten DNS-Server für einen Client anzeigen, wie in Abbildung 11 zu sehen.
Verwalten von Netzwerkdiensten
Was passiert, wenn Admins zur Fehlersuche auf dem Server Netzwerkdienste wie DNS oder Dynamic Host Configuration Protocol (DHCP) verwalten müssen? Als Erstes werden sie wahrscheinlich den Status des Dienstes überprüfen. Anschließend werden sie vermutlich den Dienst neu starten. Es ist erstaunlich, wie oft sich Probleme durch einen Neustart lösen lassen.
16. Get-Service (Dienststatus kontrollieren)
Services können entweder über den Dienstnamen oder den Anzeigenamen identifiziert werden. Für beide Optionen gibt es einen Parameter. Überprüfen Sie beispielsweise den Status eines Dienstes mit dem Cmdlet Get-Service -Name DhcpServer oder Get-Service -DisplayName "DHCP Server", wie in Abbildung 12 gezeigt.
Sie können anhand der folgenden Tabelle den Status verschiedener Dienste abfragen, um sich mit der Syntax vertraut zu machen:
| Name | DisplayName |
| dhcp |
DHCP Client |
| DNS |
DNS Server |
| DnsCache |
DNS Client |
| TermService |
Remote Desktop Services |
| ssh-agent |
OpenSSH Authentication Agent |
Vergessen Sie nicht, den Wert DisplayName in doppelte Anführungszeichen zu setzen, wenn er ein Leerzeichen enthält, wie bei DNS Client.
17. Restart-Service (Einen Dienst neu starten)
Für den Neustart eines Dienstes kommen ein ähnliches Cmdlet und eine ähnliche Syntax zum Einsatz. Um zum Beispiel den DHCP-Serverdienst neu zu starten, verwenden Sie das Cmdlet Restart-Service mit dem Parameter -Name:
Restart-Service -Name DhcpServer
18. Get-NetFirewallRule (lokale Firewall-Blockaden aufspüren)
Ein häufiger Grund, warum Netzwerkverbindungen trotz vollkommen korrekter IP-Konfiguration blockiert werden, sind die lokalen Sicherheitsrichtlinien. Mit diesem Cmdlet lässt sich die Fehlersuche abschließen, indem gezielt nach aktiven, blockierenden Regeln der Windows-Firewall gesucht wird:
Get-NetFirewallRule -Enabled True | Where-Object {$_.Action -eq "Block"} | Format-Table Name, DisplayName
Troubleshooting mit der PowerShell
Admins können die PowerShell auf so viele Arten nutzen, dass es schwierig ist, nur einige wenige hilfreiche Cmdlets auszuwählen. Die hier vorgestellten Cmdlets für das Netzwerk-Troubleshooting sind ein idealer Ausgangspunkt für PowerShell-Neulinge. Admins können die Cmdlets manuell ausführen oder sie in Skripte und Automationsstrategien einbinden.
Die meisten Cmdlets bieten mehrere Parameter, um detailliertere Informationen anzuzeigen oder die Ausgabe auf die von Administratoren gewünschten Informationen zu optimieren. Die Chancen stehen gut: Wenn Admins Netzwerkdaten benötigen, kann ein Cmdlet diese zur Verfügung stellen.
Dieser Artikel wurde ursprünglich von Damon Garn verfasst und von der ComputerWeekly-Redaktion im Juni 2026 überarbeitet und erweitert. Der Beitrag ist im Original in englischer Sprache auf Search Networking erschienen.