Définir une configuration TCP/IP en PowerShell

Définir une configuration TCP/IP correcte sur une carte réseau fait partie des choses basiques à savoir-faire. PowerShell propose des commandlets adéquats pour parvenir à configurer une interface réseau, dans le but de remplacer le bon vieux netsh.

Quant aux commandes, elles sont intégrées à PowerShell depuis la version 4.0, nous les retrouvons donc sans aucun problème sur les dernières versions de Windows Server.

I. La liste des cartes réseau

Commençons par lister les cartes réseau disponibles sur la machine, cela permettra de repérer le numéro d’index de la carte que l’on souhaite modifier. Ce numéro sera utile lors de la phase de configuration, car il permet d’avoir un numéro unique pour identifier chaque carte réseau.

Deux choix s’offrent à vous :

  • Get-NetIPInterface : obtenir la liste des configurations IP (IPv4 et/ou IPv6) de chaque interface
  • Get-NetAdapter : obtenir les propriétés basiques des adaptateurs réseau

Dans les deux cas, la colonne « ifIndex » vous donnera le numéro d’index de chaque carte. Repérez celui qui correspond à la carte à configurer, pour ma part c’est « 6 », correspondant à ma carte "Ethernet0".

Note : Pensez à basculer dans une console PowerShell (powershell.exe), si ce n’est pas déjà le cas.

Exemple - Get-NetIPInterface et Get-NetAdapter
Exemple - Get-NetIPInterface et Get-NetAdapter

II. Configuration d’une nouvelle adresse IP

En s’appuyant sur le commandlet « New-NetIPAddress », on ajoute l’adresse IP « 192.168.100.13/24 » à l’interface ayant l’index 6, ainsi qu’une passerelle par défaut « 192.168.100.1 »

New-NetIPAddress –InterfaceIndex 6 –IPAddress 192.168.100.13 –PrefixLength 24 –DefaultGateway 192.168.100.1

Quelques précisions concernant les paramètres utilisés :

  • InterfaceIndex : numéro d’index de la carte à modifier (il est possible d’utiliser à la place –InterfaceAlias suivit du nom de l’interface si vous préférez au numéro d’index)
  • IPAddress : adresse IP à attribuer à la carte
  • PrefixLength : longueur du masque de sous réseau, au format CIDR
  • DefaultGateway : passerelle par défaut

Note : Il existe également la commande Set-NetIPAddress, qui permet de modifier la configuration d’une IP déjà existante dans les paramètres de la carte. Contrairement à ce que l’on peut voir sur internet, elle ne permet pas l’ajout d’une nouvelle adresse sur une carte (la commande retourne une erreur MSFT_NetIPAddress).

Voici la sortie correspondante à cet exemple New-NetIPAddress :

Exemple - New-NetIPAddress
Exemple - New-NetIPAddress

Si votre carte était configurée en DHCP, le fait d’ajouter une adresse IP désactive le mode DHCP. D’ailleurs au passage, voici comment activer/désactiver le DHCP sur une carte :

Set-NetIPInterface -InterfaceIndex 6 -Dhcp {Enabled/Disabled}

Revenons à l’adresse IP, nous avons vu comment ajouter une adresse IP sur une carte. Cependant, si une adresse IP est déjà en place sur la carte, elle ne sera pas écrasée par celle que nous venons d’ajouter, il faut donc supprimer l’ancienne. Sinon, le risque c'est de cumuler plusieurs adresses IP sur la même carte réseau.

Imaginons que sur ma carte d’index 6, j’ai une ancienne adresse IP qui est « 192.168.100.14 » et que je souhaite la supprimer :

Remove-NetIPAddress –InterfaceIndex 6 –IPAddress 192.168.100.14 –PrefixLength 24

Vous remarquerez que l’on s’appuie sur l’utilisation de la commande Remove-NetIPAddress, en reprenant en modèle la commande d’ajout d’une adresse IP. Confirmez la demande de suppression avec « T » ou deux fois avec « O ».

Exemple - Remove-NetIPAddress
Exemple - Remove-NetIPAddress

La notion de Store :

  • ActiveStore : appliquer immédiatement l’adresse IP définie
  • PersistentStore : l’ordinateur sauvegarde l’adresse IP pour l’appliquer après redémarrage. Quand l’ordinateur redémarre, il copie les paramètres sauvegardés dans l’ActiveStore

III. Ajout d’un DNS en PowerShell

Nous avons configuré l'adresse IP, le masque de sous-réseau et la passerelle par défaut, mais il nous manque un élément important : le DNS. On continue en indiquant le serveur DNS « 192.168.100.11 » qui correspond à mon contrôleur de domaine. Toujours sur la même carte réseau, puis on vérifie que le changement est bien pris en compte :

Set-DnsClientServerAddress -InterfaceIndex 6 -ServerAddresses 192.168.100.11

Pour la vérification :

Get-DnsClientServerAddress -InterfaceIndex 6
Exemple - Set-DnsClientServerAddress
Exemple - Set-DnsClientServerAddress

Si éventuellement vous souhaitez ajouter un suffixe DNS, utilisez cette commande (exemple avec it-connect.local) :

Set-DnsClient -InterfaceIndex 6 -ConnectionSpecificSuffix it-connect.local

IV. Récupérer la configuration IP avec PowerShell

Pour vérifier que la configuration de la carte réseau est correcte, on utilise la commande suivante :

Get-NetIPConfiguration

 Note : Un alias de cette commande est présent par défaut, il suffit de saisir « gip ». Intéressant pour gagner du temps lorsqu’on souhaite visualiser sa configuration, sinon « Get-NetIPConfiguration » est plus ennuyeux à saisir qu’un simple « ipconfig ».

On peut ajouter à la commande le paramètre « InterfaceIndex » ou « InterfaceAlias » si nécessaire pour cible une interface en particulier. Cette commande doit forcément vous rappeler la commande ipconfig.

La configuration de la carte réseau est désormais terminée. N’hésitez pas à vous entraîner sur ces commandes plutôt que d’utiliser les commandes netsh.

Pour ceux qui préfèrent, il est aussi possible d’utiliser « sconfig ».

V. Définir une configuration TCP/IP avec sconfig

Comme d'habitude, pour accéder à sconfig saisissez la commande suivante :

sconfig

Ensuite, faites le choix « 8 » qui correspond à « Paramètres réseau » et appuyez sur Entrée.

Vous devez indiquer le numéro d’index de votre carte afin que SCONFIG sache quelle carte vous souhaitez configurer. Pour cela, repérez-vous à la colonne « Index numéro » (ou "Index#") dans le listing des cartes réseau disponibles, pour ma part l’index est « 1 ». Si vous avez suivi la procédure PowerShell, vous remarquerez que le numéro d'index n'est pas le même.

Indiquez ensuite « 1 » pour définir une adresse à la carte réseau puis « s » pour indiquer que vous souhaitez définir une adresse configuration statique (et donc manuellement).

On va vous demander trois choses : l’adresse IP statique, le masque de sous-réseau et la passerelle par défaut. Complétez les champs un par un.

Patientez quelques secondes pendant l’actualisation de la configuration de la carte réseau. Une fois que c’est fait, vous pourrez vérifier que vos paramètres sont bien pris en compte.

La manipulation ne s’arrête pas là, il nous reste à définir un ou plusieurs serveurs DNS pour pouvoir effectuer de la résolution de noms et donc accéder à internet. Cette fois-ci, au sein du menu "Paramètres de carte réseau", effectuez le choix « 2 » correspondant « Définir les serveurs DNS ».

Ensuite, indiquez l’adresse IP de votre serveur DNS préféré/principal puis appuyez sur « Entrée ». Un message d’avertissement apparaîtra. Faites-en de même pour le serveur DNS auxiliaire/secondaire si nécessaire.

Pour retourner au menu principal de SCONFIG, vous devez simplement appuyer sur "Entrée", sans faire de choix.

Félicitations, vous avez réussi à définir une configuration TCP/IP complète en s’appuyant sur PowerShell et l’utilitaire sconfig.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian has 3474 posts and counting.See all posts by florian