This is a PowerCLI script that I use to Storage vMotion (s/vmotion) VMs from an input file (CSV File). This helps me evacuate VMs from a datastore that will be decommissioned and this serves like an automation. With this, I do not have to log back to vCenter and manually do storage migrations. This also have a lesser performance impact compared to simultaneously queuing storage migrations manually in case this will be done on non-peak hours.
|
1
2
3
4
5
6
7
8
|
$VMsToRelocate = Import-Csv "ListOfVMsToRelocate.csv"$Datastore = Get-Datastore -Name "datastore_name"foreach ($VM in $VMsToRelocate){Write-Host "Relocating VM:" $VM.Name "to" $DatastoreGet-VM -Name $VM.Name | Move-VM -datastore $Datastore > $null}Write-Host "Completed!" |
Note that the CSV file must have a Header called Name, below is an example.
|
1
2
3
4
|
NameVM1VM2VM3 |
If you want to export the list of VMs that you want to migrate, you can use RV Tools to generate a VM Inventory, export the list to MS Excel, do your filtering there (such as filter by the storage path), and I personally like to sort them by used size (in MB), then simply copy-paste to the CSV file. You do not need to create the CSV file in Excel, I use Notepad++.