Le script suivant va nous permettre de migrer le stockage d'une seule VM vers un Datastore défini.
<#
. AUTEUR : Antoine JOVELIN
. FONCTION : Storage VMotion sur une 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 -fore Cyan "
##############################
# Storage VMotion sur une VM #
##############################"
Write-Host;
$STRVMotionVMName = Read-Host -Prompt " Entrer le nom d'une VM "
Write-Host;
$STRVMotiondatastore = Read-Host -Prompt " Entrer le datastore sur lequel sera migré le stockage de la VM "
Write-Host;
move-vm -vm $STRVMotionVMName -Datastore $STRVMotiondatastore -DiskStorageFormat Thin -runasync -Confirm:$false
Write-Host;
vcenter-disconnect
L'objectif de ce script est de migrer le stockage de plusieurs VMs vers un Datastore 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 migration à effectuer.
Pour migrer le stockage des 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 migrée, pour en migrer d'autres il suffira d'ajouter les informations des autres VMs sur les lignes suivantes.
VMName,Datastore
nom_de_la_vm1,nom_du_Datastore
nom_de_la_vm2,nom_du_Datastore
nom_de_la_vm3,nom_du_Datastore
nom_de_la_vm4,nom_du_Datastore
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 : Storage 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 "
########################################
# Storage VMotion sur une liste de VMs #
########################################"
Write-Host;
$csvpath = ""
$strgvmotion = Import-Csv -Path $csvpath
foreach ($strg in $strgvmotion){
Write-Host " Migration en cours du stockage de la VM " -NoNewline; Write-Host $strg.VMName -ForegroundColor green
Write-Host;
move-vm -vm $strg.VMName -Datastore $strg.Datastore -DiskStorageFormat Thin -runasync -Confirm:$false
}
sleep 2
Write-Host;
Write-host " Verification de la migration du stockage des VMs dans le nouveau Datastore " -NoNewline ; write-host $strg.Datastore -ForegroundColor Green
Write-Host;
foreach ($strg in $strgvmotion){
$check = Get-VM -Name $strg.VMName | Get-Datastore
if ($check = $strg.Datastore){
Write-Host;
Write-host "Le stockage de la VM"$vm.VMName"a été migrée dans le Datastore "$strg.Datastore"" -ForegroundColor green
}else{
Write-Host;
Write-host " ATTENTION Le stockage de la VM"$vm.VMName"n'a pas été migrée dans le Datastore "$strg.Datastore"" -ForegroundColor red
}
}
Write-Host;
vcenter-disconnect