L'objectif de ce script est d'automatiser la suppression de plusieurs VM.
Le script est interactif et demandera l'autorisation d'étendre chacune des VM allumée afin de les supprimer.
Si les VM sont éteinte lors du lancement du script, elles seront supprimée sans interaction avec l'utilisateur.
Pour utiliser ce script il sera impératif de :
Attention : LE SCRIPT VA SUPPRIMER DEFINITIVEMENT TOUTES LES VM DE LA LISTE. SANS BACKUP AUCUN RETOUR ARRIERE NE SERA POSSIBLE.
Le temps d'exécution du script va dépendre du nombre de Datastores à traiter.
Pour effectuer la suppression des VM le script fonctionne en récupérant les informations depuis un fichier csv.
Ce fichier va comprendre plusieurs lignes :
Exemple pour une seule VM :
Le compte utilisateur doit être un compte ayant des privilèges administrateur sur vCenter.
Ne pas oublier de remplir la variable$csvpath
<#
. AUTEUR : Antoine JOVELIN
. FONCTION : Supprimer une liste de VM
. UTILISATION :
- Lancer le script
#>
cls
# Declaration des fonctions
function vcenter-connect{
$VC = Read-Host -Prompt " Entrer le nom de vCenter "
$cred = Get-Credential
Write-Host;
Write-Host -ForegroundColor cyan "Connexion à vCenter. Merci de patienter..."
Connect-VIServer $VC -Credential $cred
Write-Host;
}
function vcenter-disconnect{
Write-Host;
Write-Host -ForegroundColor cyan "Déconnexion de vCenter..."
Disconnect-viserver -Server $Global:DefaultVIServer -Confirm:$false -Force
Write-Host;
}
# Debut du script
vcenter-connect
Write-Host;
Write-Host -fore cyan "
#############################
# Supprimer une liste de VM #
#############################"
Write-Host;
$csvpath = ""
$deletevm = Import-Csv -Path $csvpath
foreach($delete in $deletevm){
$PowerState = get-vm $delete.VMName | select powerstate
Write-Host;
Write-Host " Traitement en cours de la VM " -NoNewline; Write-Host $delete.VMName -ForegroundColor Green
if($PowerState.powerstate -eq "PoweredOff"){
Write-Host " Suppression de la VM en cours " -ForegroundColor yellow
remove-vm -VM $delete.VMName -DeletePermanently -Confirm:$false
}elseif($PowerState.powerstate -eq "PoweredON"){
$herestring = @"
********** ATTENTION POUR SUPPRUMER UNE VM ELLE DOIT ETRE ETEINTE **********
"@
$herestring
Write-Host;
$shutdown = Read-Host -Prompt " Continuer et eteindre une VM ? [oui/non] "
Write-Host;
do{
if($shutdown -eq "non"){
Write-Host " ### Annulation, la VM ne sera pas eteinte et pas supprimée ### " -ForegroundColor yellow
Write-Host;
}elseif($shutdown -eq "oui"){
Write-Host " ### Arrêt de la VM ### " -ForegroundColor green
Write-Host;
Shutdown-VMGuest -VM $delete.VMName -Confirm:$false
sleep 30
Write-Host;
Write-Host " Suppression de la VM en cours " -ForegroundColor yellow
remove-vm -VM $delete.VMName -DeletePermanently -Confirm:$false
}
}while ( ($shutdown -ne "oui") -and ($shutdown -ne "non"))
}
}
Write-Host;
Write-host " Verification de la suppression des VMs " -NoNewline ; write-host $vm.Cluster -ForegroundColor Green
sleep 60
foreach ($delete in $deletevm) {
$check = Get-VM -Name $delete.VMName
if ($check = $?){
Write-Host;
Write-host "ATTENTION : La VM"$delete.VMName" n'a pas ete supprimee " -ForegroundColor red
}else{
Write-Host;
Write-host " la VM"$delete.VMName" a ete supprimee " -ForegroundColor green
}
}
Write-Host;
vcenter-disconnect