Hyper-V : Comment lister l’adresse IP de toutes les VM ?
I. Présentation
Ce tutoriel ne sera pas le plus long que j'ai rédigé, mais il sera utile à tous les sysadmins de plate-forme Hyper-V, du moins je l'espère. Que ce soit pour un export, pour retrouver à qui appartient une adresse IP, ou pour trouver une adresse IP disponible, etc... Vous pourrez avoir besoin de savoir rapidement quelles sont les adresses IP utilisées par vos VM sur un hôte Hyper-V.
Pour cela, on va s'appuyer sur le module Hyper-V de PowerShell et plus particulièrement le commandlet Get-VM.
II. Obtenir les IP des VM avec PowerShell
Ouvrez une console PowerShell, et saisissez la commande suivante pour voir comment on peut exploiter le commandlet Get-VM :
Get-VM | Get-Member
Voici ce que l'on obtient :
La propriété étendue "NetworkAdapters" nous intéresse, on va donc la sélectionner :
Get-VM | Select-Object -ExpandProperty NetworkAdapters
Là encore si l'on refait un Get-Member sur cette commande, on obtiendra un nombre de sous-propriétés importantes, on va en sélectionner quelques-unes :
Get-VM | Select-Object -ExpandProperty NetworkAdapters | Select-Object VMName,IPAddresses,SwitchName
Ces propriétés permettent d'afficher respectivement le nom de la VM, ses adresses IP (IPv4 et IPv6) ainsi que le nom du vSwitch sur lequel la VM est connectée.
Une commande équivalente et alternative peut être :
Get-VM | Get-VMNetworkAdapter | ft VMName,IPAddresses,SwitchName
Ces méthodes s'appuient sur une interrogation des services d'intégration installés au sein de vos VMs, que ce soit une VM Windows ou Linux, le résultat doit être retourné. Par contre, si la machine virtuelle n'est pas allumée, vous ne pourrez pas obtenir l'adresse IP. Connaissez-vous une autre commande ?