Quand on installe des applications, des serveurs, des firewall et tant d’autres choses, il faut souvent dépanner des problèmes de connectivité. Un des premiers test que l’on fait est souvent « ping » mais il est nécessaire de temps en temps d’aller un peu plus loin. Avec PowerShell, rien de plus simple avec la cmdlet « Test-NetConnection » qui va vous simplifier le processus de test des ports, de vérification des connexions réseau et de diagnostic des problèmes potentiels.
Dans cet article, je vais essayer de vous donner quelques exemples d’utilisation de la commande « Test-NetConnection » pour tester les ports. On verra les quelques paramètres clés et en prime des scripts utiles et des conseils de dépannage pour améliorer la gestion de votre réseau.
Qu’est-ce que Test-NetConnection ?
Introduit dans Windows PowerShell 4.0, Test-NetConnection est une cmdlet intégrée et utilisée pour diagnostiquer la connectivité réseau. Elle vous permet d’envoyer une requête ping aux appareils distants, de tester les ports ouverts et même de tracer les routes réseau. L’applet de commande est incroyablement utile pour les tests réseau, car elle vous indique non seulement si une connexion a réussi, mais fournit également des informations détaillées sur les performances du réseau, les problèmes de pare-feu, etc…
L’utilisation la plus élémentaire de la cmdlet Test-NetConnection est simple. Pour tester si un port spécifique sur un serveur distant est ouvert, utilisez la syntaxe suivante :
Test-NetConnection -ComputerName <nom d'hôte ou IP> -Port <numéro de port>
Par exemple, si vous souhaitez tester si le port 80 (utilisé pour HTTP) est ouvert sur le site all-it-network.com, la commande serait :
Test-NetConnection -ComputerName all-it-network.com -Port 80
Cette commande simple vérifie la connectivité au serveur et si le port 80 est ouvert. Le résultat indiquera si la connexion TCP a réussi (TcpTestSucceeded = True) ainsi que d’autres informations telles que l’adresse IP source et de destination.
Réponse Test-NetConnexion en détail
Lorsque vous exécutez l’applet de commande Test-NetConnection, la sortie fournit une variété de détails utiles en fonction de ce que vous aller mettre en paramètre :
- ComputerName : le nom d’hôte ou l’adresse IP de l’ordinateur distant.
- RemoteAddress : l’adresse IP résolue de l’hôte distant.
- RemotePort : numéro de port testé.
- InterfaceAlias : interface réseau utilisée pour le test.
- SourceAddress : l’adresse IP locale utilisée pour le test.
- PingSucceeded : Un booléen indiquant si le test ping a réussi (cela s’applique si le test ping est également exécuté).
- PingReplyDetails (RTT) : Le temps que mets le paquet à revenir
- TcpTestSucceeded : un booléen indiquant si le test du port a réussi.
Le champ le plus important lors du test des ports est TcpTestSucceeded. Si ce champ renvoie True, le port est ouvert et accepte les connexions. S’il renvoie False, cela signifie que le port est fermé ou inaccessible en raison de pare-feu, de problèmes de réseau ou d’autres problèmes comme ci-dessous :
Et si on veut tester plusieurs ports ?
Dans certains scénarios, vous devrez peut-être tester plusieurs ports à la fois. Malheureusement « Test-NetConnection » ne prend pas en charge nativement le test de plusieurs ports en une seule commande, mais vous pouvez écrire un simple script PowerShell pour parcourir une liste de ports et tester chacun d’eux :
$ports = @(80, 443, 8080)
foreach ($port in $ports) {
Test-NetConnection -ComputerName all-it-network.com -Port $port
}
Ce script définit un tableau de ports (80, 443 et 8080), puis parcourt chaque port pour tester la connectivité à example.com. Pour chaque port, PowerShell affichera l’état de la connexion. Vous pouvez ajouter autant de port que vous le souhaiter entre parenthèses, il faut juste les séparer par des virgules.
Et si je veux tester un port sur plusieurs serveurs ?
De même, ce n’est pas natif et si vous devez tester un même port sur plusieurs serveurs, vous pouvez écrire un script pour automatiser ce processus. Par exemple, vous pouvez utiliser une liste de serveurs et parcourir chacun d’eux pour tester un port spécifique :
$servers = (Server1, Server2, Server3...)
foreach ($serveur in $servers) {
Test-NetConnection -ComputerName $server -Port 443
}
Ce script lit une liste de noms de serveurs et/ou d’adresses IP et teste si le port 443 (HTTPS) est ouvert sur chacun d’eux.
Paramètres et fonctionnalités supplémentaires
« Test-NetConnection » offre plus de fonctionnalités que le simple test des ports. Voici certains paramètres supplémentaires qui pourraient vous être utiles :
-InformationLevel
Ce paramètre vous permet de spécifier le niveau de détail dans la sortie. Le définir sur Détaillé fournira des informations plus détaillées sur la connexion réseau. Par exemple:
Test-NetConnection -ComputerName all-it-network.com -Port 80 -InformationLevel Detailed
Cette commande testera non seulement le port 443, mais renverra également des diagnostics réseau détaillés, y compris les résultats de résolution de nom et les informations d’interface.
-TraceRoute
Ce paramètre fonctionne de manière similaire à la commande tracert, affichant le chemin réseau entre votre ordinateur et l’hôte distant. Par exemple j’ai tester sur le DNS de google :
Test-NetConnection -ComputerName 8.8.8.8 -TraceRoute
Ceci est utile pour diagnostiquer chaque saut avant d’arriver à la destination et pouvoir identifier l’équipement qui pose problème.
-CommonTCPPort
Si vous testez un port de service commun (tel que HTTP, HTTPS ou RDP), vous pouvez utiliser ce paramètre au lieu de spécifier directement le numéro de port si vous ne vous en souvenez plus 😉. Par exemple:
Test-NetConnection -ComputerName 8.8.8.8 -CommonTCPPort HTTP
Cette commande teste la connectivité sur le port HTTP standard (80).
Pour aller un peu plus loin, vous pouvez imaginer créer votre script pour tester vos différents serveurs avec les commandes vues précédemment puis automatiser les vérifications à l’aide de tâches planifiées dans Windows. Comme ça à chaque fois que vous démarrez votre ordinateur, vous n’aurez plus besoin de tester vos serveurs un par un et vous aurez directement votre test affiché.
L’applet de commande « Test-NetConnection » de PowerShell est super pratique. Que vous ayez besoin de tester un seul port, plusieurs ports ou même de tester l’itinéraire vers un serveur distant, « Test-NetConnection » fournit un moyen simple et puissant de diagnostiquer les problèmes.
N’hésitez pas à commencer à tester dès aujourd’hui et faites moi savoir en commentaire si vous avez tester la commande et si vous valider son utilité !
Si l’article vous a plu et si vous aimez mon travail, vous pouvez faire un don en suivant ce lien :