IP-Troubleshooting mit der Powershell

27. Juli 2017

Im Netzwerk läuft nicht alles „rund“, die Mitarbeiter klagen über fehlerhafte Verbindungen, nicht verbundenen Netzlaufwerke und haben teilweise keinen oder nur sehr eingeschränkten Zugriff auf das Internet? Falls im Netzwerk der „Wurm drin ist“, kommen die Systembetreuer den Fehlerquellen mit den passenden Werkzeugen auf die Spur. In der Vergangenheit setzten die Administratoren dazu auf Befehle in der Windows-Kommandozeile (CMD). Doch auch für die Powershell sind die entsprechenden Cmdlets verfügbar. Diese erleichtern eine Analyse des Netzwerks.

Bei Netzwerkproblemen sollten die Systembetreuer zunächst feststellen, ob nur ein System (etwa ein Desktop- oder Notebook) betroffen ist, oder ob gleich mehrere Nutzer über Fehlermeldungen und nicht verfügbare Netzwerkressourcen klagen. Liegt der Fehler nur an einem Endgerät, macht es meist keinen Sinn erst einmal das komplette Netzwerk einer Diagnose zu unterziehen.

Denn in diesem Fall kann es oftmals schon ausreichen, einfach den IP-Adapter auf dem betroffenen Client zurückzusetzen. Eventuell funktioniert  das System danach wieder einwandfrei.

Allerdings könnte es auch sein, dass zwar bisher nur ein Client „auffällig geworden ist“, aber der Fehler auch auf weiteren Systemen auftritt. Nur mit dem Unterschied, dass sich die Mitarbeiter noch nicht beschwert haben. Das kann etwa der Fall sein, wenn nur ein geringer Prozentsatz der Netzwerkdatenpakete verloren geht, so dass es zwar zu einer erhöhten Latenz kommt, die Nutzer dies aber nicht  als Fehler bemerken.

Liegt beispielsweise diese Latenz bei 200 Millisekunden, können die Mitarbeiter dies eventuell beim „normalen“ Surfen nicht wahrnehmen, obwohl die Latenz ansonsten nur bei 20 Millisekunden liegt. Beides liegt unter der Wahrnehmungsschwelle, trotzdem unterscheiden sich die Werte um „den Faktor Zehn“.

Auch ist es möglich, dass der „erste“ Fehler-Client nur der Vorbote eines größeren Problems darstellt, daher sollten die Administratoren bei Netzwerkfehlern hellhörig werden, und derartige Vorfälle im Hinterkopf behalten.

Um nun auf einem Client eine Netzwerkdiagnose vorzunehmen, sind unterschiedliche Cmdlets in der Powershell verfügbar. Zunächst sollten sich die Administratoren einen Überblick verschaffen. Dies ist etwa mit dem Pendant zum CMD-Befehl „ipconfig“ möglich:

Get-Netadapter -Name „*“

Generell listet das Cmdlet alle sichtbaren Netzwerkadapter auf, mit dem Parameter „-Name“ und der Wildcard (*) sowie dem Parameter „-IncludeHidden“ lässt sich das auch auf alle verfügbaren Adapter ausweiten. Sollen nur physikalische NICs (Network Interface Controller) berücksichtigt werden, hilft der Parameter „-Physical“ weiter. Alternativ kann ein bestimmte Netzwerkadapter auch namentlich genannt werden, etwa:

Get-NetAdapter -Name „Ethernet Verbindung 1“

Im Gegensatz zur „alten CMD-Version“ (Ipconfig /all) können die Informationen auch extra sortiert, oder ausgegeben werden:

Get-NetAdapter -Name „Ethernet Verbindung 1“ | Format-List -Property „*“

Zudem können die Administratoren auch „entfernte“ Netzwerkadapter anzeigen. Folgendes Cmdlet zeigt beispielsweise alle physikalischen NICs auf dem Server mit dem Hostnamen „DC.NT4admins.local“:

Get-NetAdapter -Name „*“ -CimSession „DC.NT4ADMINS.local“ -Physical

Nach einem Blick auf die IP-Adresskonfiguration kann die Anfrage noch weiter spezifiziert werden, dazu ist etwa das folgende Cmdlet geeignet:

Get-NetIPAddress

Hier sind ebenfalls unterschiedliche Parameter verfügbar, etwa um bestimmte Adapter abzusprechen (-InterfaceAlias) oder um sich rein auf IPv4-Adressen zu konzentrieren (-AddressFamily IPv4).

Einstellungen ändern

Um die Eigenschaften der Netzwerkadapter zu ändern und zu konfigurieren können die Cmdlets „Set-NetAdapter“ und „SetIPInterface“ von den Systembetreuern eingesetzt werden. Beispielsweise kommt erstgenanntes Cmdlet zum Zuge, wenn es darum geht VLANs (Virtual Local Area Network) zu definieren, oder um eine MAC-Addresse zu spezifizieren. Auch interessant: Mit der Abwandlung „Restart-NetAdapter“ kann ein (virtueller oder physikalischer) Netzwerkanschluss aus und anschließend wieder eingeschaltet werden:

Restart-NetAdapter -Name „Ethernet Verbindung 1“

Alternativ <b>deaktivieren </b>die Administratoren einzelne NICs mit Hilfe des folgenden Befehles:


Disable-NetAdapter -Name „Ethernet Verbindung 1“

Um nun einem Adapter eine dynamische IP-Adresse zuzuweisen (per <b>DHCP</b>) kommt folgendes Cmdlet zu Einsatz:


Set-NetIPInterface "Ethernet Verbindung 1" -DHCP Enable -AddressFamily IPv4

Oder die Administratoren legen eine fixe IP-Adresse fest, und definieren<span style="mso-spacerun: yes;">  </span>im gleichen Atemzug auch noch den <b>Standardgateway</b>:


New-NetIPAddress -InterfaceIndex 1 -IPAddress 192.168.1.12 -DefaultGateway 192.168.1.1 -PrefixLength 24

Verbindungen prüfen

Sind die IP-Adresseinstellungen geprüft oder korrigiert worden, möchten die Systembetreuer in der Regel die Konnektivität prüfen. Dazu setzen die Administratoren in der Vergangenheit auf den „Ping-Befehl“. In der aktuellen Variante der Powershell (Version 5) steht dazu der Befehl „Test-NetConnection“ zur Verfügung. Im Hintergrund werden beim Einsatz dieses Cmdlets ICMP-Pakete (Internet Control Message Protocol) an die jeweiligen IP-Adressen gesendet. Folglich müssen die Firewalls der Systeme entsprechend konfiguriert sein, um ICMP-Anfragen weiterzuleiten.

Bei aktuellen Serverbetriebssystemen von Microsoft verwirft die Windows-Firewall in den Standardeinstellungen ICMP-Anfragen, daher muss dies extra in den Firewall-Einstellungen abgeändert werden, um Ping einzusetzen. Das entsprechende Gegenstück (Test-NetConnection) in der Powershell wird beispielsweise wie folgt aufgerufen:

Test-NetConnection www.google.de

Statt einer URL kann auch eine IP-Adresse „angepingt“ werden:


Test-NetConnection 192.168.0.1

Für den Parameter „-CommonTCPPort“ können folgende vier Werte eingesetzt werden:

  • SMB,
  • HTTP,
  • RDP und
  • WINRM.

Mit dem Parameter „-Port“ lassen sich auch beliebige, gültige Werte (zwischen 0 und 65535) einsetzen.  Soll etwa der „FTP-Port“ geprüft werden, könnten die Systembetreuer folgendes Cmdlet einsetzen:

Test-NetConnection 192.168.0.1 -Port 20

Bei älteren Systemen (etwa Windows 7 oder Windows 8.1), die noch nicht über die Powershell-Version 5.0 verfügen, funktioniert der Aufruf von „Test-NetConnection“ nicht, hier müssen die Systembetreuer auf „Test-Connection“ ausweichen.

Netzwerkadapter zurücksetzen

Falls sich mit dem Aus- und Einschalten des Netzwerkadapters, oder mit einer manuell zugewiesenen IP-Adresse das Netzwerkproblem nicht lösen lässt, setzen die Administratoren oftmals den TCP/IP-Stack zurück. Das entspricht etwa einer Deinstallation mit erneuter Installation des Netzwerkadapters. In der Vergangenheit kam dabei der CMD-Befehl „netsh int ip reset“ zum Zuge. Für die Powershell steht dagegen folgendes Cmdlet bereit:

Remove-NetIPAddress

Florian Huttenloher

Lesen Sie auch