Quand on déploie une application, un serveur ou un pare-feu, les problèmes de connectivité font partie des premiers points à diagnostiquer. Le réflexe classique consiste souvent à lancer un ping. C’est utile pour vérifier une réponse ICMP, mais cela ne permet pas de savoir si un service TCP précis, HTTPS sur le port 443, RDP sur 3389 ou une application métier sur un port personnalisé accepte réellement une connexion.
Sous Windows, la cmdlet PowerShell Test-NetConnection permet d’aller plus loin. Elle peut tester une connexion TCP vers un port distant, effectuer un test ICMP, lancer un traceroute et fournir des informations de diagnostic réseau.
Pour vérifier immédiatement si le port TCP 443 est joignable sur un hôte :
Test-NetConnection -ComputerName all-it-network.com -Port 443

Le champ à regarder est TcpTestSucceeded. S’il vaut True, la connexion TCP a pu être établie. S’il vaut False, la connexion n’a pas abouti : le service peut ne pas être à l’écoute, un pare-feu peut bloquer le trafic, le chemin réseau peut être indisponible ou un autre problème peut empêcher la connexion.
Qu’est-ce que Test-NetConnection ?
Test-NetConnection appartient au module NetTCPIP de Windows. D’après la documentation Microsoft, la cmdlet fournit des informations de diagnostic pour une connexion et prend en charge plusieurs scénarios : test ICMP, test TCP, traceroute et diagnostic de sélection de route.
La syntaxe la plus utile pour vérifier un port TCP est :
Test-NetConnection -ComputerName <nom-d-hote-ou-IP> -Port <numero-de-port>
Exemple avec HTTP :
Test-NetConnection -ComputerName all-it-network.com -Port 80

La cmdlet tente alors une connexion TCP vers le port indiqué et retourne notamment le résultat dans TcpTestSucceeded.
Comprendre le résultat de Test-NetConnection
Les propriétés affichées dépendent du type de test et du niveau d’information demandé. Pour un test TCP, vous retrouverez notamment :
- ComputerName : le nom d’hôte ou l’adresse IP demandée.
- RemoteAddress : l’adresse IP distante résolue.
- RemotePort : le port TCP testé.
- InterfaceAlias : l’interface réseau locale utilisée.
- SourceAddress : l’adresse IP source utilisée.
- TcpTestSucceeded : indique si la connexion TCP a pu être établie.
Pour un test ICMP, la sortie peut également inclure PingSucceeded et PingReplyDetails (RTT).
Il faut éviter une interprétation trop rapide de TcpTestSucceeded = False. Ce résultat ne prouve pas à lui seul que « le port est fermé ». Il signifie que la connexion TCP n’a pas pu être établie depuis la machine qui exécute le test. La cause peut être un service arrêté, un pare-feu local ou distant, un filtrage intermédiaire, un problème de routage ou une erreur de résolution de nom.
Obtenir uniquement True ou False
Pour un script ou une vérification rapide, le paramètre -InformationLevel Quiet permet d’obtenir un résultat booléen :
Test-NetConnection -ComputerName all-it-network.com -Port 443 -InformationLevel Quiet

Cette forme est pratique lorsque vous voulez intégrer le test dans une condition PowerShell ou dans un script de supervision léger.
Tester plusieurs ports avec PowerShell
Test-NetConnection ne possède pas de paramètre permettant de fournir directement une liste de ports dans un seul appel. Il suffit toutefois de parcourir un tableau de ports :
$ports = @(80, 443, 8080)
foreach ($port in $ports) {
Test-NetConnection -ComputerName 'all-it-network.com' -Port $port
}
Pour obtenir une sortie plus compacte, vous pouvez utiliser -InformationLevel Quiet et construire un objet par port :
$ports = @(80, 443, 8080)
foreach ($port in $ports) {
[pscustomobject]@{
ComputerName = 'all-it-network.com'
Port = $port
TcpTestSucceeded = Test-NetConnection -ComputerName 'all-it-network.com' -Port $port -InformationLevel Quiet
}
}

Vous obtenez ainsi une ligne par port avec un résultat True ou False facilement exploitable.
Tester le même port sur plusieurs serveurs
Le principe est identique pour tester un même service sur plusieurs machines. La liste des serveurs doit être définie comme un tableau de chaînes de caractères :
$servers = @('Server1', 'Server2', 'Server3')
foreach ($server in $servers) {
[pscustomobject]@{
Server = $server
Port = 443
TcpTestSucceeded = Test-NetConnection -ComputerName $server -Port 443 -InformationLevel Quiet
}
}

Ce script teste le port TCP 443 sur chaque serveur et retourne un résultat facilement lisible. Vous pouvez remplacer les noms de serveurs par des FQDN ou des adresses IP.
Afficher des informations détaillées avec -InformationLevel
Le paramètre -InformationLevel accepte les valeurs Detailed et Quiet. Microsoft documente notamment l’utilisation de Detailed pour afficher davantage d’informations de diagnostic :
Test-NetConnection -ComputerName all-it-network.com -Port 80 -InformationLevel Detailed

Selon le système et le type de test, la sortie détaillée peut inclure les résultats de résolution DNS, des informations d’interface, la route utilisée et d’autres éléments utiles au diagnostic.
À l’inverse, Quiet réduit la sortie à un résultat simple, particulièrement pratique dans les scripts.
Tracer le chemin réseau avec -TraceRoute
Test-NetConnection peut aussi lancer un traceroute vers une destination :
Test-NetConnection -ComputerName 8.8.8.8 -TraceRoute

Le paramètre -TraceRoute demande à la cmdlet d’effectuer un tracé de route vers l’hôte distant. Le paramètre -Hops permet également de définir le nombre de sauts à parcourir.
Cette fonction est utile lorsque la destination n’est pas joignable et que vous voulez déterminer à quel endroit le chemin réseau cesse de répondre.
Utiliser -CommonTCPPort : attention aux valeurs acceptées
Le paramètre -CommonTCPPort évite de mémoriser certains numéros de ports, mais il n’accepte pas n’importe quel nom de service. La documentation Microsoft liste uniquement quatre valeurs : HTTP, RDP, SMB et WINRM.
Exemple pour HTTP :
Test-NetConnection -ComputerName 8.8.8.8 -CommonTCPPort HTTP

Pour HTTPS, n’utilisez pas -CommonTCPPort HTTPS : HTTPS ne fait pas partie des valeurs acceptées. Utilisez directement le port TCP 443 :
Test-NetConnection -ComputerName all-it-network.com -Port 443
Même logique pour tout autre service qui n’est pas proposé par -CommonTCPPort : utilisez le paramètre -Port avec le numéro correspondant.
Que faire si TcpTestSucceeded renvoie False ?
Si le test TCP échoue, procédez par étapes plutôt que de conclure immédiatement que le port est fermé :
- Vérifiez que le nom d’hôte utilisé est correct et qu’il se résout vers l’adresse attendue.
- Vérifiez que la machine cible est joignable sur le réseau.
- Contrôlez que le service cible est démarré et écoute bien sur le port attendu.
- Vérifiez les pare-feu Windows, les ACL réseau, les firewalls intermédiaires, les règles NAT ou les équipements de sécurité.
- Comparez le résultat depuis une autre machine ou un autre segment réseau pour déterminer si le problème est localisé.
- Utilisez -InformationLevel Detailed et, si nécessaire, -TraceRoute pour obtenir davantage d’indices.
Test-NetConnection confirme le résultat d’une tentative de connexion depuis un point donné. Il ne remplace donc pas l’analyse du service distant, du pare-feu et du chemin réseau.
Test-NetConnection ou Test-Connection dans PowerShell 7 ?
Il existe aujourd’hui deux commandes à ne pas confondre.
Test-NetConnection appartient au module Windows NetTCPIP et reste particulièrement utile pour le diagnostic réseau sur Windows. Microsoft indique que le module NetTCPIP est nativement compatible avec PowerShell 7 sur les versions modernes de Windows prises en charge.
Dans PowerShell 7 actuel, Test-Connection possède également un jeu de paramètres -TcpPort. Le paramètre -Detailed pour les tests TCP a été ajouté dans PowerShell 7.4.
Exemple avec PowerShell 7.4 ou version ultérieure :
Test-Connection all-it-network.com -TcpPort 443 -Detailed
Si votre objectif est de documenter un environnement Windows existant, Test-NetConnection reste une commande très pratique. Pour des scripts PowerShell 7 modernes, il est utile de connaître également le mode TCP de Test-Connection.
Automatiser les vérifications
Une fois vos tests validés, vous pouvez les intégrer dans un script PowerShell puis exécuter ce script via le Planificateur de tâches Windows. Pour un usage réellement opérationnel, ajoutez au minimum un horodatage, la cible, le port, le résultat et éventuellement une action d’alerte en cas d’échec.
L’objectif n’est pas simplement d’afficher True ou False, mais de disposer d’un historique exploitable lorsqu’un service devient inaccessible.
Test-NetConnection fait partie des commandes PowerShell les plus utiles pour un diagnostic réseau rapide sous Windows. Une seule commande permet de vérifier la connectivité TCP vers un port précis, d’obtenir un résultat booléen pour les scripts, de lancer un traceroute ou d’afficher des informations de diagnostic supplémentaires.
Pour un premier test, retenez surtout cette syntaxe :
Test-NetConnection -ComputerName <hote> -Port <port>
Et pour HTTPS :
Test-NetConnection -ComputerName all-it-network.com -Port 443
Si TcpTestSucceeded vaut True, la connexion TCP a réussi depuis votre poste. S’il vaut False, poursuivez le diagnostic côté service, pare-feu, résolution de nom et routage.
Si l’article vous a été utile, vous pouvez partager votre cas d’usage ou votre méthode de diagnostic en commentaire.
Si l’article vous a plu et si vous aimez mon travail, vous pouvez faire un don en suivant ce lien :


Bonjour,
Je souhaitais vous faire part de mon appréciation pour votre blog. Votre contenu est inspirant et très enrichissant pour les lecteurs !
Par la même occasion, je me permets de proposer une collaboration. Pensez-vous qu’il serait possible que je rédige un article invité sur votre site ? Le cas échéant, pourriez-vous me donner quelques informations sur les modalités et consignes ?
Merci d’avance pour votre retour, et toutes mes félicitations pour votre excellent travail !
Cordialement,