Test de connexion dans PowerShell : guide complet de l'applet de commande

Dernière mise à jour: 14/08/2025
Auteur: Isaac
  • Test-Connection propose des tests ping, traceroute, MTU et TCP avec une sortie structurée.
  • En PowerShell 6/7 modifie la syntaxe, les types de retour et ajoute des paramètres tels que -Traceroute et -Detailed.
  • Windows PowerShell 5.1 utilise WMI et Win32_PingStatus avec des options d’authentification et d’emprunt d’identité.
  • -Quiet renvoie des booléens, -Repeat itère en continu et -MtuSize calcule le MTU du chemin.

Guide de test de connexion dans PowerShell

Si vous travaillez avec des réseaux sous Windows, Linux ou macOS, tôt ou tard, vous voudrez vérifier si un hôte répond et dans quelle mesure le chemin est sain. L'applet de commande Test-Connection est le couteau suisse moderne pour les pings ICMP, le traceroute, la découverte MTU et les tests TCP de PowerShell., avec une sortie structurée qui peut être filtrée et traitée.

De plus, l’histoire des cmdlets a deux côtés : Dans Windows PowerShell classique (5.1), il s'appuyait sur WMI et renvoyait Win32_PingStatus, tandis que dans PowerShell 6 et versions ultérieures, l'applet de commande a été repensée et étendue pour être multiplateforme et exposer des objets spécifiques tels que PingStatus, TraceStatus ou TcpPortStatus. Connaître à la fois les familles de paramètres et les sorties permet de réaliser un diagnostic complet et précis..

Qu'est-ce que Test-Connection et que résout-il ?

Test-Connection envoie des requêtes d'écho ICMP (ping) à une ou plusieurs destinations et renvoie des réponsesIl peut également tracer la route (traceroute), calculer la MTU du chemin et tester l'accessibilité d'un port TCP. Comparé à l'exécutable ping traditionnel, L'applet de commande renvoie des objets riches que vous pouvez canaliser, filtrer et convertir. aux rapports ou aux tableaux de bord.

Dans sa version moderne, l'applet de commande ajoute des paramètres tels que -Traceroute, -MtuSize, -TcpPort, -Repeat, -TimeoutSeconds, -IPv4/-IPv6 et -Detailed (ce dernier depuis PowerShell 7.4 pour décomposer les tentatives TCP). Avec -Quiet, vous pouvez limiter la sortie aux booléens par destination pour des décisions rapides dans les scripts.

Dans les environnements où vous combiniez auparavant ping, tracert, nslookup ou telnet, PowerShell fournit des options natives pour couvrir pratiquement tous les diagnostics de connectivité à partir d'un seul outil.. Et si vous préférez une autre approche, il existe Test-NetConnection pour les contrôles réseau combinés, mais cet article se concentre sur la compression de Test-Connection.

Principaux changements : Windows PowerShell 5.1 vs PowerShell 6/7

Il y a deux étapes claires dans l’évolution de l’applet de commande. Dans Windows PowerShell 5.1 et versions antérieures, l'applet de commande utilise WMI et renvoie Win32_PingStatus; expose des paramètres tels que -ComputerName, -AsJob, -DcomAuthentication, -Impersonation, -Protocol, -ThrottleLimit, -TimeToLive (TTL) et -WsmanAuthentication, entre autres.

Avec le passage à PowerShell 6+, L'applet de commande a été réécrite pour être multiplateforme et son API a été modifiée: -TargetName est désormais utilisé (au lieu de -ComputerName), les ensembles de paramètres Ping/Repeat/Traceroute/MtuSize/TcpPort apparaissent, les sorties sont des types spécifiques tels que PingStatus, TraceStatus, PingMtuStatus ou TcpPortStatus, et -TimeoutSeconds, -ResolveDestination et -Detailed (7.4) arrivent pour TCP.

Cela implique que, Si vous écrivez des scripts portables, vous devez détecter la version et ajuster les paramètres et le traitement. sortie. Une option consiste à couvrir les deux mondes avec des branches conditionnelles ($PSVersionTable.PSVersion.Major).

Syntaxe et ensembles de paramètres modernes (PowerShell 6+)

L'applet de commande propose plusieurs ensembles de paramètres qui activent différents modesVoici un aperçu des principales options :

  • Ping par défaut: Test de connexion
  • Répéter le ping: Test de connexion -Répéter
  • Traceroute: Test de connexion -Traceroute
  • MtuSizeDetect: Test de connexion -MtuSize
  • Port TCP: Test de connexion -Port TCP
  Comment forcer la suppression de fichiers ou de dossiers sous Windows : guide complet et mis à jour

Dans tous les modes, -TargetName est obligatoire et accepte les noms DNS ou les adresses IPv4/IPv6La sortie par défaut dans ping est une séquence d'objets PingStatus, un par écho.

Syntaxe et exemples de l'applet de commande

Syntaxe classique (Windows PowerShell 5.1)

D’autres signatures sont utilisées dans les environnements Windows PowerShell 5.1., avec -ComputerName comme paramètre central et plusieurs options d'authentification WMI :

  • Réglage par défaut: Test de connexion
  • Source: Test de connexion
  • Calme: Test de connexion

Dans ce cas, La sortie par défaut est ManagementObject Win32_PingStatus, et avec -AsJob, un objet de travail (System.Management.Automation.RemotingJob) est renvoyé.

Paramètres modernes, expliqués un par un

-Nom de la cible: Cibles à tester, prend en charge les noms et adresses IPv4/IPv6 ; position 0 et obligatoire ; accepte la canalisation par valeur et par nom de propriété.

-Ping: Force le mode ping ICMP ; il s'agit du comportement par défaut, il est donc généralement ignoré à moins d'être spécifiquement combiné.

-Répéter: envoie des pings en continu ; Si vous fournissez plusieurs destinations, répétez uniquement la première et ignorez les autres.; incompatible avec -Count dans ping.

-Traceroute: Tracez l'itinéraire jusqu'à la destination en renvoyant des objets TraceStatus par saut ; à partir de PowerShell 6 et prend en charge -ResolveDestination pour les noms DNS intermédiaires.

-MtuSize: détecte le chemin MTU vers la destination, renvoyer PingMtuStatus avec la taille MTU effective; utile en combinaison avec -DontFragment et -BufferSize.

-Port TCP: tente d'ouvrir une connexion TCP vers le port spécifié sur la destination ; renvoie $true ou $false (et avec - Détaillé dans 7.4, objets TcpPortStatus avec latences et informations par tentative).

-Compter: nombre de demandes d'écho ; par défaut 4 en ping et également valable avec TcpPort.

-Retard: secondes entre les tentatives ; utile pour la congestion ou les tests soutenus.

-Taille du tampon: octets de charge utile ; 32 par défaut; défini à côté de -DontFragment pour les tests MTU.

-Ne pas fragmenter: définit l'indicateur de non fragmentation sur IP ; clé de la découverte du MTU de chemin.

-IPv4 / -IPv6: forcer l'utilisation du protocole IP ; utile sur les hôtes à double pile ou lorsqu'il y a des problèmes de résolution.

-MaxHops: nombre maximum de sauts autorisés ; 128 par défaut sur Windows 10+.

-RésoudreDestination: tente de résoudre le nom DNS de destination et, à côté de -Traceroute, également des hôtes intermédiaires si possible.

-Source:origine de l'expédition (équipement) le cas échéant; par défaut le local, utile dans les scénarios multi-origines.

-Silencieux: supprime les erreurs et renvoie des booléens par destination ; $true si au moins un ping arrive, $false si tous échouent.

-TimeoutSeconds:délai d'attente maximal pour une réponse ; 5 secondes par défaut; disponible depuis PowerShell 6.

-Détaillé: dans les tests TCP (-TcpPort), renvoie TcpPortStatus avec l'ID, la direction, la latence, la connexion et le statut; intégré à PowerShell 7.4.

Paramètres et options classiques (Windows PowerShell 5.1)

-Nom de l'ordinateur: destinations à tester ; obligatoire et ne dépend pas de la communication à distance PowerShell.

  Que sont les attaques de manipulation WDAC et comment se défendre ?

-AsJob: exécute l'applet de commande en arrière-plan ; renvoie un objet de travail récupérable avec Receive-Job afin de ne pas bloquer la session.

-Authentification Dcom: Niveau d'authentification COM utilisé avec WMI ; valeurs acceptées Par défaut, Aucun, Connexion, Appel, Paquet, Intégrité du paquet, Confidentialité du paquet, Inchangé (paquet par défaut).

-Imitation: Niveau d'emprunt d'identité WMI ; valeurs Par défaut, Anonyme, Identifier, Usurper l'identité, Déléguer (par défaut Impersonate).

-Protocole: protocole pour WMI ; DCOM ou WSMan selon la configuration.

-Authentification Wsman: Mécanisme d'authentification lors de l'utilisation de WSMan ; prend en charge Par défaut, Basique, Négocier, CredSSP, Digest, Kerberos.

-Limite des gaz: nombre maximal de connexions simultanées pour la commande ; par défaut 32.

-Durée de vie (TTL): nombre maximal de renvois avant de rejeter le paquet ; 128 par défaut sous Windows (alias TTL).

-Source et -Credential: pour envoyer des pings à partir d'autres sources avec les informations d'identification appropriées, particulièrement utile pour comparer la latence à partir de différents emplacements.

Exemples pratiques avec PowerShell 6/7

Ping IPv4 de base vers un serveur spécifique et analyse de la sortie PingStatus :

Test-Connection -TargetName Server01 -IPv4

Envoyer une requête ping à plusieurs destinations en une seule commande avec un tableau de noms :

Test-Connection -TargetName Server01, Server02, Server12

Personnalisez le nombre, le délai, les sauts et la taille de la mémoire tampon lorsque le réseau est chargé :

Test-Connection -TargetName Server01 -Count 3 -Delay 2 -MaxHops 255 -BufferSize 256

Exécuter en tant que tâche d'arrière-plan Lecture des destinations à partir d'un fichier et attente des résultats :

$job = Start-Job -ScriptBlock { Test-Connection -TargetName (Get-Content -Path 'Servers.txt') }
$results = Receive-Job $job -Wait

Créer une session PSSession uniquement s'il existe une connectivité au moins dans un écho :

if (Test-Connection -TargetName Server01 -Quiet) {
  New-PSSession -ComputerName Server01
}

Découvrez l'itinéraire avec traceroute et renvoie TraceStatus par saut :

Test-Connection -TargetName www.google.com -Traceroute

Test TCP détaillé (PowerShell 7.4) pour un port TLS typique :

Test-Connection bing.com -TcpPort 443 -Detailed -Count 4

Exemples pratiques avec Windows PowerShell 5.1

Ping simple vers un ordinateur distant avec sortie Win32_PingStatus :

Test-Connection -ComputerName Server01

Envoyer une requête ping à plusieurs serveurs de l'équipe locale :

Test-Connection -ComputerName Server01, Server02, Server12

Envoyer une requête ping à une destination à partir de plusieurs sources avec des informations d'identification pour comparer les latences :

Test-Connection -Source Server02, Server12, localhost -ComputerName Server01 -Credential (Get-Credential)

Personnaliser les intentions, le TTL, la mémoire tampon et la concurrence dans des réseaux étendus :

Test-Connection -ComputerName Server01 -Count 3 -Delay 2 -TTL 255 -BufferSize 256 -ThrottleLimit 32

Exécuter en tant que tâche d'arrière-plan et collecter les résultats une fois terminé :

$job = Test-Connection -ComputerName (Get-Content 'Servers.txt') -AsJob
if ($job.JobStateInfo.State -ne 'Running') {
  $results = Receive-Job $job
}

Ping avec identifiants et usurpation d'identité ajuster le niveau d'emprunt d'identité :

Test-Connection Server55 -Credential (Get-Credential) -Impersonation Identify

Utiliser une sortie booléenne pour des décisions rapides dans les scripts :

if (Test-Connection -ComputerName Server01 -Quiet) { New-PSSession Server01 }

Entrées et sorties de l'applet de commande

Entrées:Dans la version moderne, les objets ne sont pas transmis directement à l'applet de commande ; Les valeurs de paramètres standard sont acceptées (TargetName prend en charge la canalisation par valeur ou par nom de propriété.)

  Comment préparer son ordinateur Windows avant de le vendre pour éviter les fuites de données

Sorties dans PowerShell 6/7:

  • Microsoft.PowerShell.Commands.TestConnectionCommand+PingStatus: un objet par réponse ICMP.
  • Microsoft.PowerShell.Commands.TestConnectionCommand+TraceStatus: un objet par saut avec -Traceroute.
  • Microsoft.PowerShell.Commands.TestConnectionCommand+PingMtuStatus: avec -MtuSize pour le chemin MTU.
  • Boolean: avec -Quiet ou -TcpPort (tableaux s'il y a plusieurs destinations).
  • Microsoft.PowerShell.Commands.TestConnectionCommand+TcpPortStatus: avec -Détaillé pour TCP dans 7.4.

Sorties dans Windows PowerShell 5.1:

  • Objet de gestion (Win32_PingStatus): pour chaque écho.
  • Boolean: lors de l'utilisation de -Quiet.
  • Système.Gestion.Automatisation.Travail à distance: si exécuté avec -AsJob.

Notes et fonctionnalités multiplateformes

Linux et les autorisations: lors de l'utilisation de -BufferSize autre que 32 ou de combinaisons avec -MtuSize qui modifient la taille par défaut, sudo peut être requisDans ce cas, l’applet de commande génère une exception indiquant que des privilèges sont requis.

Silencieux et gestion des erreurs: -Quiet renvoie des booléens et supprime les erreurs; rappelez-vous qu'avec plusieurs destinations, la sortie est une matrice des valeurs par ordre d'évaluation.

Répéter ou compter: ne pas mélanger -Répéter avec -Compter dans le ping ; -La répétition ignore les destinations supplémentaires et itère uniquement sur la premièrePour plusieurs destinations avec répétition, appelez l’applet de commande pour chacune d’elles.

Résoudre les noms: -ResolveDestination ajoute la résolution DNS de la destination, et avec -Traceroute, essayez de résoudre chaque saut; utile pour mapper des périphériques intermédiaires.

Compatibilité: oui toi scénario devrait fonctionner sur Windows PowerShell 5.1 et PowerShell 6/7, détecte la version et utilise -ComputerName ou -TargetName en conséquence, et ajuste l'interprétation de la sortie.

Test-Connection et sa relation avec Test-NetConnection

Avant Test-NetConnection, les utilitaires tels que ping, tracert, nslookup ou telnet étaient combinés pour diagnostiquer la connectivité. Avec PowerShell v4 est apparu Test-NetConnection, centralise les tests ICMP et TCP et trace même les itinéraires avec une seule applet de commande.

Pourtant, Test-Connection couvre des scénarios profonds avec des objets plus spécifiques Pour les tests ICMP, MTU, Traceroute et TCP modernes. Vous pouvez le compléter avec Test-NetConnection pour une vérification rapide et complète.

Exemples de Test-NetConnection pour comparer les comportements :

# Chequeo general con más detalle
Test-NetConnection -InformationLevel Detailed

# Comprobar resolución y ruta hacia un host
Test-NetConnection -ComputerName google.com
Test-NetConnection -ComputerName google.com -TraceRoute

# Verificar un puerto TCP conocido
Test-NetConnection -ComputerName google.com -CommonTCPPort HTTP

# Especificar un puerto concreto
Test-NetConnection -ComputerName google.com -Port 80

Dans les scénarios où telnet n'est plus présent par défaut, Ces applets de commande PowerShell simplifient la vérification des ports TCP et de la connectivité ICMP, en ajoutant des métadonnées utiles telles que l'interface de sortie ou l'adresse source.

Donner la priorité à une connexion réseau dans Windows 11-6
Article connexe:
Comment prioriser une connexion réseau sous Windows 11 : guide complet étape par étape