Voor de dagen van de PowerShell Test-NetConnection
cmdlet hadden we veel verschillende command-line tools waaruit we konden kiezen om verschillende netwerkconnectiviteitsproblemen op te lossen.
We hadden ping om ICMP-echo’s en -antwoorden te testen; tracert om te zien waar onze pakketten mogelijk worden verworpen; nslookup om DNS-query’s uit te voeren tegen onze DNS-servers; telnet om te controleren op open TCP-poorten, en diverse andere hulpprogramma’s. Er was een hulpprogramma voor alles.
Met de introductie van PowerShell v4 op Windows 8.1 en Windows Server 2012 R2 is deze aanpak van één-hulpprogramma-voor-één-taak verouderd geraakt.
Laat me je voorstellen aan de nieuwe, allesomvattende Test-NetConnection
cmdlet. Denk aan de PowerShell Test-NetConnection als ping, tracert, nslookup, telnet, en een paar andere hulpprogramma’s in één bundel van probleemoplossende goedheid.
Probleemoplossing met Test-NetConnection
Laten we eens kijken wat we kunnen doen met de Powershell test-netconnection cmdlet en hoe we het kunnen gebruiken wanneer we in de ongelukkige positie zijn om een netwerkconnectiviteitsprobleem op te lossen.
Om dit te demonstreren, ga ik PowerShell gebruiken Test-NetConnection
om een veelvoorkomend, real-world probleem op te lossen: “Ik kan niet naar de XYZ website gaan!”
Wat de meeste gebruikers niet weten, is dat het succesvol weergeven van een website in een browser op zich al een verbazingwekkende prestatie is gezien het aantal bewegende onderdelen dat samen moet werken om dit mogelijk te maken. In ieder geval omvat het proces:
- Het hebben van een internetverbinding.
- Het hebben van een route naar uw DNS-server.
- Contact opnemen met de DNS-server om de URL op te lossen.
- Het hebben van een route naar het IP-adres waar de URL naar verwijst.
- Het hebben van TCP-poort 80 openstaan.
- en zo verder, en zo verder .
Bevestig uw internetverbinding
Om met het oplossen te beginnen, moet u eerst bevestigen dat u een internetverbinding heeft. U kunt dit eenvoudig doen door simpelweg PowerShell uit te voeren Test-NetConnection
zonder enige parameters. Als u echter meer informatie wilt, raad ik aan om de InformationLevel
parameter te gebruiken met het Detailed
argument.
Deze eenvoudige opdracht controleert uw lokale connectiviteit en internetconnectiviteit en bevestigt dat uw DNS-client namen kan oplossen die naar uw DNS-server worden gericht, allemaal in één keer. Beschouw het als een algemene gezondheidscontrole voor uw netwerkverbinding. Deze opdracht controleert drie van de vijf processen die nodig zijn om een website weer te geven in één keer!
Gebruik Test-NetConnection om uw verbinding met de websitehost te testen
We zullen nu onze probleemoplossing moeten richten op de betreffende websitehost. Laten we google.com als voorbeeld nemen. Je kunt ook een externe computer gebruiken.
We kunnen Test-NetConnection
gebruiken met de ComputerName
-parameter om tegelijkertijd te controleren of de websitehost kan worden opgelost in DNS, of er een TCP-route beschikbaar is om naar het IP-adres te gaan waarnaar de naam wordt opgelost, en of er een ping kan worden uitgevoerd.
Hoewel deze stap technisch gezien verifieert dat we een route hebben naar de webserver van google.com, wil ik meer gedetailleerde informatie vinden over welke routers mijn pakketten doorlopen om bij de webserver van google.com te komen. Om dat te doen, zal ik de TraceRoute
-parameter gebruiken om een lijst te krijgen.
Zorg ervoor dat uw TCP-poort open is
Onze laatste test is om ervoor te zorgen dat de TCP-poort waarop we verwachten dat de webserver draait, open is. In dit geval, aangezien we gewoon google.com specificeren, ga ik ervan uit dat het TCP-poort 80 is. Om dat te doen, voegen we eenvoudig een andere parameter toe aan Test-NetConnection
. Omdat Test-NetConnection
het standaard TCP-poortnummer begrijpt voor een paar verschillende services, hoeven we zelfs het poortnummer niet te weten. Ik kan gewoon HTTP doorgeven aan de CommonTCPPort
-parameter en het werk voor me laten doen.
Als de website echter mogelijk op een andere poort draait, zoals 8080, kunt u een TCP-poort rechtstreeks specificeren door in plaats daarvan de Port
-parameter te gebruiken.
We hebben nu elk van de connectiviteitseisen getest die aan het begin van dit artikel zijn beschreven. Als we de website op dit moment nog steeds niet kunnen weergeven, hebben we bevestigd dat het probleem niet bij onze klant ligt, en kunnen we het probleem doorgeven aan Google of misschien een downstream DNS-server.