Getty Images/iStockphoto
16 PowerShell-Befehle für das Netzwerk-Troubleshooting
Wir stellen 16 wichtige Befehle der Windows PowerShell vor. Diese Cmdlets, wie Get-NetIPAddress und Test-Connection, helfen Admins beim Troubleshooting ihrer Netzwerkumgebungen.
Die Windows PowerShell hat die Windows-Befehlszeile revolutioniert. Vom Konfigurationsmanagement über die Softwareinstallation bis hin zum Scripting zählt die PowerShell zu den leistungsfähigsten Tools im Werkzeugkasten jedes Windows-Administrators. Außerdem eignet sich die PowerShell für die Verwaltung von Windows-Netzwerkeinstellungen und -diensten.
Dieser Artikel beschreibt 16 PowerShell-Cmdlets für das Netzwerk-Troubleshooting. Die erste Gruppe von Cmdlets zeigt, wie sich Netzwerkinformationen anzeigen lassen, so dass Admins überprüfen können, ob diese korrekt sind. Die zweite Gruppe behandelt die Namensauflösung, während die letzte Kategorie sich mit der Verwaltung von Netzwerkdiensten per PowerShell befasst.
Dieser Artikel dient nicht dazu, die PowerShell zu erlernen, fasst aber kurz zusammen, wie Sie Cmdlets ausführen. Die grundlegende PowerShell-Syntax folgt dem Schema Verb-Substantiv, gefolgt von möglichen Parametern. Get-Date beispielsweise zeigt das aktuelle Datum und die Uhrzeit des Systems an.
Folgend finden Sie einige nützliche PowerShell-Tricks:
- PowerShell-Cmdlets unterscheiden nicht zwischen Groß- und Kleinschreibung.
- Verwenden Sie das Cmdlet Format-Table, um die Ausgabe von Befehlen zu verwalten.
- Mit der Pfeil-nach-oben-Taste scrollen Sie durch die letzten Befehle.
- Drücken Sie die Tabulatortaste nach Verben, um zu sehen, welche Substantive sich kombinieren lassen – wobei zahlreiche Optionen zur Verfügung stehen.
- Wenn Sie die Tabulatortaste nach einem Parameter-Bindestrich (-) drücken, lassen sich die verfügbaren Parameter anzeigen.
- Wenn Sie die Tabulatortaste nach einem Parameter drücken, können Sie die gültigen Parameterwerte 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.
- 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 2 sehen Sie als Ausgabe die gekürzte IPv6-Adresse des Systems.
- 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 3 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.
- 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 4 zeigt die Informationen zur Netzwerkschnittstelle.
4 und 5. Enable-NetAdapter und Disable-NetAdapter (Schnittstelle aktivieren und deaktivieren)
Sie stellen möglicherweise fest, dass ein anderer Administrator eine Netzwerkschnittstelle deaktiviert hat oder jemand die Schnittstelle als Failover konfiguriert und nicht reaktiviert hat. Dann lässt sich mit dem Cmdlet Enable-NetAdapter eine Schnittstelle wieder aktivieren. 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 Disable-NetAdapter angezeigt werden.
- 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 5 sehen Sie die Informationen der Routing-Tabelle auf einem Laborcomputer.
7 und 8. Test-Connection und Test-NetConnection (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 6 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 7 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 8).
Admins können auch Test-NetConnection für ähnliche Diagnoseinformationen einsetzen.
- Get-NetTCPConnection (Bestehende Verbindungen zum Server 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 Port-Nummer abzufragen. Vielleicht sind Admins an Ergebnissen zum TCP-Port 135 interessiert. In diesem Fall können sie den Parameter -LocalPort verwenden, wie in Abbildung 9 zu sehen ist.
Weitere Parameter sind -State und -RemoteAddress sowie eine Reihe anderer Optionen.
Namensauflösung
Wer den Artikel zur Namensauflösung gelesen hat, wird einige der folgenden nützlichen Cmdlets wiedererkennen. Die Namensauflösung ist ein wichtiger Teil beim Networking, 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 anhand eines DNS-Servers auflösen kann.
- 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 10 zeigt die Ausgabe des Cmdlets Resolve-DnsName.
- 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 11 dargestellt.
Um eine bestimmte Netzwerkschnittstelle abzufragen, verwenden Sie InterfaceIndex oder InterfaceAlias.
12 und 13. Get-DnsClientCache und Clear-DnsClientCache (DNS-Cache anzeigen und löschen)
Beim Troubleshooting von clientseitigen Problemen der Namensauflösung empfiehlt es sich oft, den DNS-Cache zu löschen. Obwohl der Cache normalerweise den Prozess der Namensauflösung optimiert, kann er unter Umständen fehlerhafte oder veraltete Informationen enthalten, was zur Folge hat, dass die Namensauflösung fehlschlägt oder falsche Ergebnisse liefert. Admins verwenden zum Löschen häufig ipconfig /flushdns und ipconfig /displaydns, um den Cache anzuzeigen.
In der PowerShell sind die Cmdlets Get-DnsClientCache und Clear-DnsClientCache das entsprechende Äquivalent.
Das folgende Video veranschaulicht, wie sich der Cache anzeigen und löschen lässt.
Das Cmdlet Clear-DnsClientCache liefert zwar keine Ergebnisse zurück, aber der Cache wird gelöscht.
- 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 12 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.
- 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 13 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.
- 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.
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.