Vor den Tagen des PowerShell Test-NetConnection
-Befehls hatten wir viele verschiedene Befehlszeilentools zur Auswahl, um verschiedene Netzwerkverbindungsprobleme zu diagnostizieren.
Wir hatten ping zum Testen von ICMP-Echos und Antworten; tracert, um zu sehen, wo unsere Pakete möglicherweise abgelehnt wurden; nslookup zum Ausführen von DNS-Abfragen gegen unsere DNS-Server; telnet, um offene TCP-Ports zu überprüfen, und verschiedene andere Dienstprogramme. Es gab ein Dienstprogramm für alles.
Mit der Einführung von PowerShell v4 unter Windows 8.1 und Windows Server 2012 R2 ist dieser Ansatz mit einem Dienstprogramm für eine einzelne Aufgabe zur Diagnose von Konnektivitätsproblemen veraltet geworden.
Erlauben Sie mir, Ihnen den neuen, allmächtigen Test-NetConnection
-Befehl vorzustellen. Denken Sie an den PowerShell Test-NetConnection wie an ping, tracert, nslookup, telnet und einige andere Dienstprogramme, die in ein Paket mit Diagnosefunktionen integriert sind.
Problembehandlung mit Test-NetConnection
Sehen wir uns an, was wir mit dem Powershell-Test-NetConnection-Befehl tun können und wie wir ihn verwenden können, wenn wir uns in der unglücklichen Position befinden, ein Netzwerkverbindungsproblem zu diagnostizieren.
Um dies zu demonstrieren, werde ich PowerShell Test-NetConnection
verwenden, um ein häufiges, realweltliches Problem zu beheben: „Ich kann nicht auf die XYZ-Website zugreifen!“
Was die meisten Benutzer nicht wissen, ist, dass es an sich eine erstaunliche Leistung ist, eine Website erfolgreich in einem Browser darzustellen, wenn man die Anzahl der beweglichen Teile berücksichtigt, die zusammenarbeiten müssen, um dies zu ermöglichen. Der Prozess umfasst minimal:
- Eine Internetverbindung haben.
- Eine Route zu Ihrem DNS-Server haben.
- Den DNS-Server kontaktieren, um die URL aufzulösen.
- Eine Route zur IP-Adresse haben, zu der die URL aufgelöst wird.
- Den TCP-Port 80 geöffnet haben.
- und so weiter, und so weiter .
Bestätigen Sie Ihre Internetverbindung
Um mit der Fehlerbehebung zu beginnen, müssen Sie zunächst bestätigen, dass Sie eine Internetverbindung haben. Sie können dies einfach tun, indem Sie PowerShell Test-NetConnection
ohne Parameter ausführen. Wenn Sie jedoch mehr Informationen erhalten möchten, schlage ich vor, den Parameter InformationLevel
mit dem Argument Detailed
zu verwenden.
Dieser einfache Befehl überprüft Ihre lokale Konnektivität und Internetverbindung und bestätigt, dass Ihr DNS-Client Namen auflösen kann, die an Ihren DNS-Server gerichtet sind, alles auf einmal. Betrachten Sie es als eine allgemeine Gesundheitsprüfung für Ihre Netzwerkverbindung. Dieser Befehl überprüft drei der fünf Prozesse, die benötigt werden, um eine Website auf einen Schlag darzustellen!
Verwenden Sie Test-NetConnection, um Ihre Verbindung zum Website-Host zu testen
Wir müssen nun unsere Fehlerbehebung an den betreffenden Website-Host weiterleiten. Lassen Sie uns google.com als Beispiel verwenden. Sie können auch einen Remote-Computer verwenden.
Wir können Test-NetConnection
mit dem ComputerName
-Parameter verwenden, um gleichzeitig sicherzustellen, dass der Website-Host im DNS aufgelöst werden kann, dass eine TCP-Route vorhanden ist, um zur IP-Adresse zu gelangen, zu der der Name aufgelöst wird, und dass ein Ping möglich ist.
Auch wenn dieser Schritt technisch gesehen bestätigt, dass wir eine Route zum Webserver von google.com haben, möchte ich detailliertere Informationen darüber finden, durch welche Router meine Pakete fließen, um zum Webserver von google.com zu gelangen. Dazu werde ich den TraceRoute
-Parameter verwenden, um eine Liste zu erhalten.
Stellen Sie sicher, dass Ihr TCP-Port geöffnet ist
Unser letzter Test besteht darin, sicherzustellen, dass der TCP-Port, auf dem der Webserver läuft, geöffnet ist. In diesem Fall gehe ich davon aus, dass es sich um den TCP-Port 80 handelt, da wir nur google.com angeben. Dazu fügen wir einfach einen weiteren Parameter zu Test-NetConnection
hinzu. Da Test-NetConnection
den Standard-TCP-Port für verschiedene Dienste versteht, müssen wir nicht einmal die Portnummer kennen. Ich kann einfach HTTP an den Parameter CommonTCPPort
übergeben und er erledigt die Arbeit für mich.
Wenn die Website jedoch möglicherweise unter einem anderen Port wie 8080 läuft, können Sie einen TCP-Port direkt angeben, indem Sie den Port
-Parameter verwenden.
Wir haben nun jeden der in diesem Artikel zu Beginn festgelegten Konnektivitätsanforderungen getestet. Wenn wir die Website zu diesem Zeitpunkt immer noch nicht rendern können, haben wir bestätigt, dass das Problem nicht bei unserem Client liegt, und wir können das Problem an Google oder vielleicht an einen nachgelagerten DNS-Server weiterleiten.