Buenas tardes!
Os subo el script que utilizo para la migración de máquinas virtuales entre datastores usando “storage vmotion”
Necesitamos un .csv en la misma ruta del script llamado moveVMconfig.csv con las siguientes columnas llamadas:
–name: nombre de máquina –datastore: nombre de datastore destino.
#############esto es lo que tenemos que guardar en un .ps1 (el nombre… el que queráis)
cls
Write-host " ##########################"
Write-host " ## Migracion datastores ##"
Write-host " ##########################"
#Declaracion de variables
$vmlist = Import-CSV -Delimiter ";" moveVMconfig.csv
$count = $vmlist.name.count
$counter = 1
Write-host
Write-host $count maquinas a migrar.
Write-host
foreach ($item in $vmlist)
{
$vmName = $item.name
$tgtConfigDS = $item.datastore
$vm = Get-VM -Name $vmName
$hds = Get-HardDisk -VM $vm
$numVM = $counter++
$spec = New-Object VMware.Vim.VirtualMachineRelocateSpec
$spec.datastore = (Get-Datastore -Name $tgtConfigDS).Extensiondata.MoRef
$hds | %{
$disk = New-Object VMware.Vim.VirtualMachineRelocateSpecDiskLocator
$disk.diskId = $_.Extensiondata.Key
$disk.datastore = $_.Extensiondata.Backing.Datastore
$spec.disk += $disk
}
$vm.Extensiondata.RelocateVM_Task($spec, "defaultPriority") | Out-Null
Write-host " Migrando maquina $vmName ($numVM de $count)"
$vm | Move-VM -Datastore $tgtConfigDS -RunAsync | Out-Null # Parte nueva
}
Write-host
Write-host Si quieres ver el progreso de la migrcion, lanza el siguiente comando:
Write-host " "-> "Get-Task -status running | get-view | % {"$"_.info} | select EntityName,State,Progress,DescriptionId" -foregroundcolor yellow
Write-host Fin.
Es una forma fácil de migrar máquinas de forma masiva, da lo mismo las que pongas a migrar se quedarán encoladas.