skip to content

Recherche

PowerCLI

Commandes PowerCLI essentielles & exemples pratiques pour gérer les environnement VMware via Powershell !

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

🔌 Connexion et configuration

📌 Action🧠 Commande
🔌 Se connecter à vCenter/ESXiConnect-VIServer server-01
🔐 Connexion avec identifiantsConnect-VIServer server-01 -User admin -Password pass
📋 Lister les connexions actives$global:DefaultVIServers
🚪 Se déconnecter de toutDisconnect-VIServer * -Confirm:$false
⚙️ Ignorer les certificats SSLSet-PowerCLIConfiguration -InvalidCertificateAction Ignore

🖥️ Gestion des VMs

📌 Action🧠 Commande
📋 Lister toutes les VMsGet-VM
🔍 Obtenir une VM spécifiqueGet-VM "vm-name"
▶️ Démarrer une VMStart-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 propreRestart-VMGuest "vm-name"
⏸️ Suspendre une VMSuspend-VM "vm-name"

⚙️ Configuration VMs

📌 Action🧠 Commande
📊 Modifier CPU et RAMSet-VM "vm-name" -NumCpu 4 -MemoryGB 8
💾 Ajouter un disque durNew-HardDisk -VM "vm-name" -CapacityGB 50
🔌 Ajouter une carte réseauNew-NetworkAdapter -VM "vm-name" -NetworkName "VLAN-100"
📝 Modifier les notesSet-VM "vm-name" -Notes "Description"
🆕 Créer une nouvelle VMNew-VM -Name "new-vm" -VMHost server-01 -Datastore DS1

🏠 Gestion des hôtes ESXi

📌 Action🧠 Commande
📋 Lister tous les hôtes ESXiGet-VMHost
🔍 Informations d’un hôte spécifiqueGet-VMHost server-01
🔧 Mettre en mode maintenanceSet-VMHost server-01 -State Maintenance
✅ Sortir du mode maintenanceSet-VMHost server-01 -State Connected
🔄 Redémarrer un hôte ESXiRestart-VMHost server-01
🖥️ VMs sur un hôte spécifiqueGet-VMHost server-01 | Get-VM

💾 Gestion des datastores

📌 Action🧠 Commande
📋 Lister tous les datastoresGet-Datastore
🔍 Informations d’un datastoreGet-Datastore "DS-PROD"
📊 Espace disque disponibleGet-Datastore | Select Name, CapacityGB, FreeSpaceGB
🖥️ VMs sur un datastoreGet-Datastore "DS-PROD" | Get-VM

📸 Snapshots

📌 Action🧠 Commande
📸 Créer un snapshotNew-Snapshot -VM "vm-name" -Name "snapshot-name"
📋 Lister les snapshotsGet-VM "vm-name" | Get-Snapshot
↩️ Restaurer un snapshotSet-VM "vm-name" -Snapshot "snapshot-name"
🗑️ Supprimer un snapshotRemove-Snapshot -Snapshot "snapshot-name"
🗑️ Supprimer tous les snapshotsGet-VM "vm-name" | Get-Snapshot | Remove-Snapshot

🔄 Migrations (vMotion)

📌 Action🧠 Commande
🔄 vMotion vers un autre hôteMove-VM -VM "vm-name" -Destination server-01
💾 Storage vMotionMove-VM -VM "vm-name" -Datastore "DS-PROD"
🔄 Migration complèteMove-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