Le script suivant va nous permettre de migrer une seule VM vers un ESXi défini.
<#
. AUTEUR : Antoine JOVELIN
. FONCTION : Effectuer un vMotion sur uns 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 "
###################################
# Effectuer un vMotion sur une VM #
###################################"
Write-Host;
$TargetESXi = Read-Host -Prompt " Entrer le nom complet de l'ESXi qui hebergera la ou les VMs "
Write-Host;
$VM = Read-Host -Prompt " Entrer le nom complet d'une VM "
Write-Host;
Move-VM $VM -Destination $TargetESXi -Confirm:$false -RunAsync
Write-Host;
vcenter-disconnect
L'objectif de ce script est de migrer plusieurs VMs vers un ESXi défini pour chacune d'entre elles.
Pour cela nous utiliserons un fichier .csv contenant les informations nécessaires aux migrations.
Pour utiliser ce script il sera impératif de :
Attention : le temps d'exécution du script va dépendre du nombre de VMs à migrer.
Pour migrer les VMs, le script fonctionne en récupérant les informations depuis un fichier cvs.
Ce fichier va comprendre plusieurs lignes :
Les informations devront obligatoirement être séparer par une virgule.
Dans cet exemple, une seule VM sera déployée, pour en faire d'autres il suffira d'ajouter les informations des autres VMs sur les lignes suivantes.
VMName,Host
nom_de_la_vm1,FQDN_ESXi
nom_de_la_vm2,FQDN_ESXi
nom_de_la_vm3,FQDN_ESXi
nom_de_la_vm4,FQDN_ESXi
Exemple :
Le compte utilisateur doit être un compte ayant des privilèges administrateur sur vCenter.
Ne pas oublier de remplir la variable$csvpath
Le script à utiliser est le suivant :
<#
. AUTEUR : Antoine JOVELIN
. FONCTION : Effectuer un vMotion sur une liste de VMs
. 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 -fore Cyan "
#############################################
# Effectuer un vMotion sur une liste de VMs #
#############################################"
Write-Host;
$csvpath = ""
$vmotion = Import-Csv -Path $csvpath
foreach ($vm in $vmotion){
Write-Host " Migration en cours de la VM " -NoNewline; Write-Host $vm.VMName -ForegroundColor green
Write-Host;
Move-VM $vm.VMName -Destination $vm.Host -confirm:$false -runasync
}
sleep 2
Write-Host;
Write-host " Verification de la migration des VMs dans l'ESXi " -NoNewline ; write-host $vm.Host -ForegroundColor Green
sleep 2
foreach ($vm in $vmotion) {
$check = Get-VM -Name $vm.VMName | select VMHost
if ($check = $vm.Host){
Write-Host;
Write-host "La VM"$vm.VMName"a été migré dans l'ESXi "$vm.Host"" -ForegroundColor green
}else{
Write-Host;
Write-host " ATTENTION la VM"$vm.VMName"n'a pas été migré dans l'ESXi"$vm.Host"" -ForegroundColor red
}
}
Write-Host;
vcenter-disconnect