VMware PowerCLI est l’interface en ligne de commande PowerShell pour administrer les environnements vSphere, vCenter et VMware Cloud.
📦 Installation
# Installer PowerCLI depuis PowerShell Gallery
Install-Module - Name VMware.PowerCLI - Scope CurrentUser
# Vérifier l'installation
Get-Module - Name VMware.PowerCLI - ListAvailable
🚨 Erreur courante d’installation
Si tu rencontres cette erreur au démarrage de PowerCLI :
Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=692fbea5521e1304' or one of its dependencies.
Cause : Conflit avec SAP Crystal Reports qui installe sa propre version de log4net
Solution :
Désinstaller “SAP Crystal Reports runtime engine for .NET Framework”
Plus d’infos : Article Broadcom
🔌 Connexion et configuration
📌 Action 🧠 Commande 🔌 Se connecter à vCenter/ESXi Connect-VIServer server-01
🔐 Connexion avec identifiants Connect-VIServer server-01 -User admin -Password pass
📋 Lister les connexions actives $global:DefaultVIServers
🚪 Se déconnecter de tout Disconnect-VIServer * -Confirm:$false
⚙️ Ignorer les certificats SSL Set-PowerCLIConfiguration -InvalidCertificateAction Ignore
🖥️ Gestion des VMs
📌 Action 🧠 Commande 📋 Lister toutes les VMs Get-VM
🔍 Obtenir une VM spécifique Get-VM "vm-name"
▶️ Démarrer une VM Start-VM "vm-name"
⏹️ Arrêt propre (avec VMware Tools) Stop-VMGuest "vm-name"
🔌 Arrêt forcé (bouton power) Stop-VM "vm-name" -Confirm:$false
🔄 Redémarrage propre Restart-VMGuest "vm-name"
⏸️ Suspendre une VM Suspend-VM "vm-name"
⚙️ Configuration VMs
📌 Action 🧠 Commande 📊 Modifier CPU et RAM Set-VM "vm-name" -NumCpu 4 -MemoryGB 8
💾 Ajouter un disque dur New-HardDisk -VM "vm-name" -CapacityGB 50
🔌 Ajouter une carte réseau New-NetworkAdapter -VM "vm-name" -NetworkName "VLAN-100"
📝 Modifier les notes Set-VM "vm-name" -Notes "Description"
🆕 Créer une nouvelle VM New-VM -Name "new-vm" -VMHost server-01 -Datastore DS1
🏠 Gestion des hôtes ESXi
📌 Action 🧠 Commande 📋 Lister tous les hôtes ESXi Get-VMHost
🔍 Informations d’un hôte spécifique Get-VMHost server-01
🔧 Mettre en mode maintenance Set-VMHost server-01 -State Maintenance
✅ Sortir du mode maintenance Set-VMHost server-01 -State Connected
🔄 Redémarrer un hôte ESXi Restart-VMHost server-01
🖥️ VMs sur un hôte spécifique Get-VMHost server-01 | Get-VM
💾 Gestion des datastores
📌 Action 🧠 Commande 📋 Lister tous les datastores Get-Datastore
🔍 Informations d’un datastore Get-Datastore "DS-PROD"
📊 Espace disque disponible Get-Datastore | Select Name, CapacityGB, FreeSpaceGB
🖥️ VMs sur un datastore Get-Datastore "DS-PROD" | Get-VM
📸 Snapshots
📌 Action 🧠 Commande 📸 Créer un snapshot New-Snapshot -VM "vm-name" -Name "snapshot-name"
📋 Lister les snapshots Get-VM "vm-name" | Get-Snapshot
↩️ Restaurer un snapshot Set-VM "vm-name" -Snapshot "snapshot-name"
🗑️ Supprimer un snapshot Remove-Snapshot -Snapshot "snapshot-name"
🗑️ Supprimer tous les snapshots Get-VM "vm-name" | Get-Snapshot | Remove-Snapshot
🔄 Migrations (vMotion)
📌 Action 🧠 Commande 🔄 vMotion vers un autre hôte Move-VM -VM "vm-name" -Destination server-01
💾 Storage vMotion Move-VM -VM "vm-name" -Datastore "DS-PROD"
🔄 Migration complète Move-VM -VM "vm-name" -Destination server-01 -Datastore DS1
🔥 Exemples concrets
🚀 Première connexion et configuration
# Se connecter à vCenter et ignorer les certificats
Connect-VIServer server - 01
Set-PowerCLIConfiguration - InvalidCertificateAction Ignore - Confirm: $false
📊 Inventaire rapide des ressources
# Vue d'ensemble de l'environnement
Write-Host " === INVENTAIRE VMWARE === "
Write-Host " Hôtes ESXi: $ ( Get-VMHost | Measure-Object | Select - ExpandProperty Count) "
Write-Host " VMs totales: $ ( Get-VM | Measure-Object | Select - ExpandProperty Count) "
Write-Host " VMs allumées: $ ( Get-VM | Where { $_ .PowerState -eq ' PoweredOn ' } | Measure | Select - ExpandProperty Count) "
🔧 Création d’une VM complète
# Créer une nouvelle VM avec configuration
$VMParams = @ {
Name = " WEB-SERVER-01 "
VMHost = " server-01 "
Datastore = " DS-PROD "
NumCpu = 2
MemoryGB = 4
DiskGB = 40
NetworkName = " VLAN-100 "
}
New-VM @VMParams
🏥 Mode maintenance d’un hôte
# Mettre un hôte en maintenance (migre les VMs automatiquement)
Write-Host " Migration des VMs... "
Set-VMHost server - 01 - State Maintenance - VsanDataMigrationMode EnsureAccessibility
📸 Snapshot avant maintenance
# Créer des snapshots pour toutes les VMs d'un hôte
Get-VMHost server - 01 | Get-VM | Where { $_ .PowerState -eq " PoweredOn " } |
New-Snapshot - Name " Avant-Maintenance- $ ( Get-Date - Format ' yyyyMMdd ' ) " - Memory: $false
📊 Rapport d’utilisation des ressources
# Générer un rapport CSV des VMs
Get-VM | Select Name , PowerState , NumCpu , MemoryGB ,
@ {N = " UsedSpaceGB " ;E = {[ math ]::Round( $_ .UsedSpaceGB , 2 )}} ,
@ {N = " VMHost " ;E = { $_ .VMHost.Name }} |
Export-Csv " VM-Report.csv " - NoTypeInformation