Générateur de commandes VMware PowerCLI
Cochez quelques options et obtenez du PowerCLI qui tourne : VM, snapshots, réseau ESXi et esxcli, chaque cmdlet expliquée.
Ce générateur de commandes VMware PowerCLI transforme une poignée de choix en un script vSphere prêt à coller et à lancer, parce qu'une vraie tâche n'est presque jamais une seule cmdlet. Choisissez un travail : créer ou cloner une VM, prendre et supprimer des snapshots, monter des virtual switches et des VMkernel adapters ESXi, ou lancer des opérations sur le host et esxcli via PowerCLI. La sortie assemble toute la séquence, en démarrant par une session Connect-VIServer, et chaque ligne porte une note en français clair sur ce qu'elle fait. Des presets couvrent les runs du quotidien : une nouvelle VM Linux, un snapshot avant patch, un VMkernel vMotion, un rescan de stockage. Tout est construit dans votre navigateur, donc vos noms de serveurs, noms de VM et chemins de datastore ne quittent jamais la page.
100% dans votre navigateur. Rien de ce que vous tapez ne quitte cette page.
Générateur de commandes VMware PowerCLI
Personne ne retient tous les flags de New-VM. Ni ceux de New-VMHostNetworkAdapter, soyons honnêtes. Du coup, cochez les options ici et vous repartez avec du PowerCLI qui tourne vraiment : créer et gérer des VM vSphere, prendre des snapshots, câbler le réseau ESXi, lancer esxcli. Chaque cmdlet est accompagnée d'une petite note d'une ligne qui explique ce qu'elle fait concrètement. Tout se passe dans votre navigateur, rien ne quitte la page.
Ce que fait ce générateur PowerCLI
Ce générateur de commandes VMware PowerCLI transforme une poignée de choix en un script vSphere prêt à coller et à lancer. PowerCLI, c'est le module PowerShell qui permet de piloter vSphere depuis un terminal. C'est comme ça qu'on scripte tout ce qu'on devrait sinon cliquer des centaines de fois dans le vSphere Client. Sauf qu'il y a un hic. Une vraie tâche, ce n'est presque jamais une seule cmdlet. Créer une VM, ça veut dire New-VM avec le bon host, le bon datastore, le format de disque, le guest id, le réseau, et ensuite en général New-CDDrive plus Start-VM par-dessus. Cet outil assemble toute la séquence à partir d'une poignée de choix, donc ce que vous copiez tourne vraiment du début à la fin. Et chaque cmdlet reçoit sa note en français clair au passage.
Il couvre les quatre tâches que je fais le plus souvent autour de vSphere. Le cycle de vie des VM. Les snapshots. Le réseau du host, c'est-à-dire les virtual switches, les port groups et les VMkernel adapters. Et les opérations sur le host, ce qui inclut lancer esxcli via PowerCLI. Chaque script démarre par une session Connect-VIServer, parce que de toute façon c'est la première chose dont a besoin n'importe quel script PowerCLI.
Démarrer avec PowerCLI
On installe le module une bonne fois depuis un PowerShell élevé : Install-Module VMware.PowerCLI -Scope CurrentUser. Ensuite on se connecte avec Connect-VIServer -Server vcenter.example.com et vous y êtes. Si vous avez un vCenter, visez-le plutôt que les hosts individuels, comme ça les fonctionnalités cluster type vMotion et DRS restent disponibles pour vos scripts. Machine de lab avec un certif auto-signé ? Lancez d'abord Set-PowerCLIConfiguration -InvalidCertificateAction Ignore sinon la connexion ne fait que râler.
Les cmdlets derrière les tâches courantes
| Tâche | Cmdlet |
|---|---|
| Se connecter | Connect-VIServer |
| Créer une VM | New-VM (avec -DiskGB, -MemoryGB, -NumCpu, -GuestId, -NetworkName) |
| Cloner depuis un template | New-VM -Template |
| Snapshot | New-Snapshot, Get-Snapshot, Remove-Snapshot |
| Virtual switch et port group | New-VirtualSwitch, New-VirtualPortGroup |
| VMkernel adapter | New-VMHostNetworkAdapter |
| Lancer esxcli | Get-EsxCli -V2 |
esxcli via PowerCLI
À peu près tout ce que vous taperiez dans le shell ESXi avec esxcli, vous pouvez le piloter à distance à la place. Get-EsxCli -VMHost host -V2 vous renvoie un objet dont les namespaces reflètent l'arbre esxcli. Donc $esxcli.network.nic.list.Invoke() liste les NICs physiques, et $esxcli.storage.core.adapter.rescan.Invoke() rescanne le stockage. L'intérêt ici, c'est d'atteindre esxcli de manière scriptable et avec les credentials gérés, sans avoir SSH activé sur chaque host. Et ça, si vous avez déjà eu à auditer qui a laissé SSH ouvert où, vous allez l'apprécier.
Confidentialité et fonctionnement de l'outil
Le JavaScript construit le script directement ici, dans votre navigateur. Vos noms de serveurs, vos noms de VM, vos chemins de datastore : rien n'est envoyé ni journalisé, point final. Une fois la page chargée, vous pouvez même débrancher le câble réseau, ça continue de marcher hors-ligne.
Sources et pour aller plus loin
- Broadcom Developer : VMware PowerCLI
- Broadcom TechDocs : documentation VMware PowerCLI
- Broadcom TechDocs : VMware vSphere
Questions fréquentes
Comment créer une VM avec PowerCLI ?
Connectez-vous d'abord avec Connect-VIServer. Ensuite New-VM -Name web01 -VMHost esxi01 -Datastore datastore1 -NumCpu 2 -MemoryGB 4 -DiskGB 40 -GuestId rhel9_64Guest -NetworkName "VM Network", et vous finissez avec Start-VM web01. Le générateur ci-dessus vous monte simplement toute cette série avec vos propres valeurs déjà insérées.
Faut-il connecter PowerCLI à vCenter ou à un host ESXi ?
À vCenter, quasiment toujours, si vous en avez un. C'est ce qui garde à portée les fonctionnalités cluster comme vMotion, DRS et HA, et en plus vous pouvez viser n'importe quel host depuis une seule session. Aller directement sur un host ESXi ? Gardez ça pour les machines vraiment standalone, ou pour le mauvais jour où vCenter lui-même est tombé.
Comment prendre et supprimer un snapshot en PowerCLI ?
Pour en créer un : New-Snapshot -VM web01 -Name pre-patch -Quiesce. Pour voir ce qu'il y a : Get-Snapshot -VM web01. Pour faire le ménage : Get-Snapshot -VM web01 -Name pre-patch envoyé dans Remove-Snapshot -Confirm:$false. Ajoutez -Memory si vous voulez aussi capturer l'état mémoire à chaud, même si celui-là est plus lent et que je le sauterais à moins d'en avoir vraiment besoin.
Comment lancer des commandes esxcli depuis PowerCLI ?
Récupérez d'abord l'objet : $esxcli = Get-EsxCli -VMHost esxi01 -V2. Ensuite parcourez le namespace, par exemple $esxcli.network.nic.list.Invoke() ou $esxcli.storage.core.adapter.rescan.Invoke(). Ça reproduit l'arbre esxcli nœud par nœud, et vous n'avez jamais à activer SSH.
Quel GuestId utiliser ?
Le GuestId, c'est la façon de dire à ESXi pour quel OS s'optimiser. Ça pilote les valeurs par défaut, le contrôleur SCSI, le type de NIC, ce genre de choses. Prenez juste la correspondance la plus proche : rhel9_64Guest, ubuntu64Guest, windows2019srvNext_64Guest, ce qui colle. Et honnêtement, si vous vous trompez, la VM démarre quand même très bien, vous vous retrouverez juste avec du matériel virtuel un poil moins bon que ce que vous auriez pu avoir.