Cet article fait partie de notre guide: Les astuces de l’administrateur réseau en 2023

16 commandes PowerShell pour dépanner le réseau

Cet article détaille les seize cmdlets disponibles sous PowerShell qui aident les administrateurs à dépanner leurs environnements réseau sous Windows.

PowerShell a révolutionné la ligne de commande de Windows. De la gestion de la configuration, à l’installation de logiciels, en passant par la création de scripts, PowerShell est l’un des outils les plus puissants de l’administrateur Windows. Et PowerShell est également utile pour gérer les paramètres et les services du réseau Windows.

Cet article présente seize cmdlets PowerShell pour le dépannage des réseaux. Le premier groupe de cmdlets traite de l’affichage des informations réseau afin que les administrateurs puissent confirmer qu’elles sont correctes. Le deuxième groupe couvre la résolution de noms, et le dernier groupe s’intéresse à la gestion des services réseau avec PowerShell.

Cet article n’est pas consacré à l’apprentissage de PowerShell, mais il fournit un bref rappel de la manière d’exécuter les cmdlets. La syntaxe PowerShell de base est de type verbe-nom suivi de paramètres éventuels. Par exemple, Get-Date affiche la date et l’heure actuelles du système.

Screenshot de la cmdlet PowerShell pour Get-Date
Les cmdlets PowerShell utilisent la forme verbe-nom, par exemple Get-Date.

Voici quelques astuces PowerShell à retenir :

  • Les cmdlets PowerShell ne sont pas sensibles à la casse.
  • Utilisez la cmdlet Format-Table pour organiser la sortie.
  • Utilisez la touche de déplacement vers le haut pour parcourir les commandes récentes.
  • Utilisez la touche de tabulation après les verbes pour voir quels noms sont disponibles ; de nombreuses options sont possibles.
  • Utilisez la touche de tabulation après le tiret (-) d’un paramètre pour voir les paramètres disponibles.
  • Utilisez la touche de tabulation après un paramètre pour voir les valeurs de paramètre valides.

Comment afficher les paramètres du réseau ?

PowerShell aide les administrateurs à afficher ou à confirmer les paramètres réseau existants dans le cadre du dépannage. Les cmdlets suivants affichent la configuration actuelle.

1/ Get-NetIPAddress pour afficher les paramètres de l’adresse IP. Souvent, la première étape du dépannage d’un problème de réseau consiste à confirmer la configuration de l’adresse IP de l’hôte. Bien que de nombreux administrateurs utilisent ipconfig pour afficher ces informations, la cmdlet Get-NetIPAddress a le même objectif.

Considérez la sortie suivante qui affiche l’adresse IPv6 tronquée du système.

Screenshot montrant la sortie partielle de Get-NetIPAddress en PowerShell
Sortie partielle de la comdlet Get-NetIPAddress

2/ Get-NetIPConfiguration pour afficher les détails de l’adresse IP. Une autre option consiste à utiliser la cmdlet Get-NetIPConfiguration pour afficher les détails des paramètres de l’adresse IP. L’une des principales caractéristiques de cette cmdlet est sa capacité à fournir des informations plus ciblées. En fonction des paramètres inclus par les administrateurs, la sortie affiche des informations pour des interfaces spécifiques et à différents niveaux de détail.

Voici la cmdlet de base :

Screenshot montrant la sortie de Get-NetIPConfiguration
Affichage de la cmdlet Get-NetIPConfiguration.

Remarquez les valeurs InterfaceAlias et InterfaceIndex. Ces valeurs sont des identificateurs communs pour référencer l’interface. Par exemple, Get-NetIPConfiguration -InterfaceAlias Ethernet est la cmdlet pour une interface avec l’alias Ethernet. Les administrateurs peuvent également ajouter le paramètre -Detailed pour obtenir des informations supplémentaires. Il est même possible de combiner les paramètres -InterfaceAlias et -Detailed pour obtenir des informations détaillées sur une interface spécifique.

3/ Get-NetAdapter pour afficher les paramètres de l’interface réseau. Il peut être utile d’afficher des informations spécifiques sur la carte réseau elle-même plutôt que l’adressage logique qui lui est associé. Utilisez la cmdlet Get-NetAdapter pour voir les attributs de l’interface, notamment le nom, la description, l’index de l’interface, l’état, l’adresse de contrôle d’accès au support et la vitesse de liaison.

Remarquez les informations de l’interface réseau ci-dessous.

Screenshot montrant la sortie de la cmdlet Get-NetAdapter
Affichage de la cmdlet Get-NetAdapter.

4/ et 5/ Enable-NetAdapter et Disable-NetAdapter pour activer et désactiver une interface. Les administrateurs peuvent découvrir qu’un autre administrateur a désactivé une interface réseau, ou peut-être que quelqu’un a configuré l’interface en tant que solution de secours et l’a maintenue en état d’arrêt. Ils peuvent utiliser le cmdlet Enable-NetAdapter pour réactiver – ou activer – une interface. La mise hors service de l’interface repose sur la cmdlet Disable-NetAdapter.

Regardez comment l’état de l’adaptateur change dans la colonne Status de l’exemple suivant. Notez également les options de confirmation affichées avec la cmdlet Disable-NetAdapter.

6/ Get-NetRoute pour afficher la table de routage. Si les administrateurs sont certains que les paramètres de l’adresse IP du système sont corrects et que l’interface réseau est réactive, ils peuvent avoir besoin de confirmer la table de routage. Plutôt que d’utiliser l’ancienne commande route, essayez plutôt la cmdlet Get-NetRoute.

Voici les informations de la table de routage d’un ordinateur de laboratoire :

Screenshot de la sortie de la cmdlet Get-NetRoute
Affichage de Get-NetRoute.

7/ et 8/ Test-Connection et Test-NetConnection pour tester la connectivité. Ping est probablement l’outil de dépannage réseau le plus omniprésent. PowerShell dispose de sa propre cmdlet pour le ping : Test-Connection. La syntaxe et les réponses sont similaires à celles de l’outil plus générique.

L’exemple suivant utilise à la fois ping et Test-Connection pour confirmer la connectivité du réseau.

Screenshot qui compare les commandes ping et Test-Connection
Comparez ping et Test-Connection

La cmdlet Test-Connection comprend de nombreux paramètres utiles qui vont au-delà de la fonctionnalité de ping. Deux de nos préférés sont -Quiet et la possibilité de tester plusieurs connexions simultanément.

Comme on le voit ci-dessous, le mode silencieux n’affiche que le résultat du test de connexion. Pour tester plusieurs connexions, séparez les noms d’hôtes ou les adresses IP par des virgules.

Screenshot montrant la sortie de la cmdlet Test-Connection -Quiet
Affichage de Test-Connection -Quiet montrant un test réussi.
Screenshot montrant la sortie de la cmdlet Test-Connection
Affichage de Test-Connection cmdlet avec un succès et un échec

Les administrateurs peuvent également utiliser la fonction Test-NetConnection pour obtenir des informations de diagnostic similaires.

9/ Get-NetTCPConnection pour tester les connexions existantes au serveur. Une autre vérification de la connectivité consiste à afficher les connexions existantes au serveur. Pour ce faire, utilisez le cmdlet Get-NetTCPConnection, qui remplace la commande netstat. La sortie de cette commande peut être longue en fonction des connexions actuelles au système et des services réseau qui y sont exécutés.

Une façon de réduire la portée des résultats est de demander les connexions actuelles par un numéro de port spécifique. Par exemple, les administrateurs sont peut-être intéressés par les résultats sur le port 135/TCP. Dans ce cas, ils peuvent utiliser le paramètre -LocalPort, comme indiqué ci-dessous.

Screenshot montrant la sortie de la cmdlet Get-NetTCPConnection sur le port 135
Affichage de Get-NetTCPConnection sur le port 135.

Les autres paramètres comprennent -State et -RemoteAddress, ainsi que de nombreuses autres options.

Comment résoudre les problèmes de noms de domaine ?

La résolution de noms de domaine est un élément essentiel de la mise en réseau, car elle met en relation des noms faciles à mémoriser avec des adresses IP difficiles à mémoriser. Il est essentiel de s’assurer que le système que les administrateurs dépannent peut résoudre les noms et les services par rapport à un serveur DNS.

10/ Resolve-DnsName pour confirmer que la résolution de nom fonctionne. Commencez par essayer de résoudre une adresse IP manuellement avec la cmdlet Resolve-DnsName. Cette cmdlet peut remplacer ou compléter nslookup dans la boîte à outils d’un administrateur.

L’exemple ci-dessous affiche la sortie de la cmdlet Resolve-DnsName.

Screenshot montrant la sortie de la cmdlet Resolve-DnsName avec une adresse IP
Affichage de Resolve-DnsName avec l'adresse IP.

11/ Get-DnsClient pour vérifier le statut du client DNS. Ensuite, vérifiez l’état du logiciel client DNS sur la machine locale. La cmdlet Get-DnsClient fournit cette information, comme indiqué ci-dessous.

Screenshot montrant la sortie de la cmdlet Get-DnsClient
Affichage de Get-DnsClient montrant l'état du client DNS.

Utilisez InterfaceIndex ou InterfaceAlias pour vous concentrer sur une interface réseau spécifique.

12/ et 13/ Get-DnsClientCache et Clear-DnsClientCache pour afficher et vider le cache DNS. Lors du dépannage de problèmes de résolution de noms côté client, il est souvent utile de vider le cache DNS. Bien que le cache rende normalement le processus de résolution de nom plus efficace, il peut potentiellement stocker des informations incorrectes ou périmées, entraînant l’échec de la résolution de nom ou le renvoi de faux résultats. Les administrateurs utilisent souvent ipconfig /flushdns pour ce faire, ainsi que ipconfig /displaydns pour afficher le cache.

Avec PowerShell, les cmdlets correspondants sont Get-DnsClientCache et Clear-DnsClientCache.

L’exemple ci-dessous montre comment afficher et effacer le cache.

La cmdlet Clear-DnsClientCache ne renvoie aucun résultat, mais le cache est supprimé.

14/ Get-DnsClientServerAddress pour afficher les serveurs DNS configurés. Les ordinateurs clients peuvent tenter de résoudre des noms à partir de serveurs DNS non valides. Affichez les serveurs DNS configurés pour un client en utilisant le cmdlet Get-DnsClientServerAddress, comme indiqué ci-dessous.

Screenshot montrant la sortie de la cmdlet Get-DnsClientServerAddress
Affichage de Get-DnsClientServerAddress montrant l'adresse IP des serveurs DNS configurés.

Comment gérer les services réseau ?

Que faire quand le dépannage implique d’aller mettre les mains dans les services réseau d’un serveur, tels que le service DNS ou le protocole de configuration dynamique des hôtes (DHCP) ? La première chose à faire est probablement est de vérifier l’état du service. Ensuite, il faut la plupart du temps redémarrer le service. Il est surprenant de voir combien de fois un redémarrage de service résout les problèmes.

15/ Get-Service pour vérifier l’état du service. Identifiez les services soit par le nom du service, soit par le nom d’affichage. Un paramètre existe pour les deux options. Par exemple, vérifiez l’état d’un service en utilisant la cmdlet Get-Service -Name DhcpServer ou Get-Service -DisplayName "DHCP Server", comme indiqué ci-dessous.

Screenshot montrant la sortie de la cmdlet Get-Service
Affichage de Get-Service montrant l'état de chaque service.

Vérifiez l’état du service ci-dessous pour vous familiariser avec la syntaxe :

Nom Nom affiché

dhcp

DHCP Client

DNS

DNS Server

DnsCache

DNS Client

TermService

Remote Desktop Services

ssh-agent

OpenSSH Authentication Agent

N’oubliez pas de mettre la valeur DisplayName entre guillemets si elle contient un espace, comme dans l’exemple précédent du DNS côté client.

16/ Restart-Service pour redémarrer un service

Le redémarrage d’un service utilise une cmdlet et une syntaxe similaires. Par exemple, pour redémarrer le service du serveur DHCP, utilisez la cmdlet Restart-Service avec le paramètre -Name.

Screenshot montrant la sortie de la cmdlet Restart-Service
Affichage de Restart-Service qui redémarre le serveur DHCP

Dépanner avec PowerShell

Les administrateurs peuvent utiliser PowerShell de tellement de façons qu’il est difficile de ne retenir que quelques cmdlets utiles. Les cmdlets de dépannage réseau ci-dessus constituent un excellent point de départ pour les novices en PowerShell. Les administrateurs peuvent utiliser les cmdlets manuellement, ou les intégrer dans des scripts et des processus d’automatisation.

La plupart des cmdlets fournissent plusieurs paramètres permettant d’afficher des informations plus détaillées ou de mieux cibler les résultats sur les informations souhaitées par les administrateurs. Quand les administrateurs ont besoin de données réseau, il y a de fortes chances qu’une cmdlet puisse les leur fournir.

Pour approfondir sur Administration de réseaux

Close