1. 程式人生 > >Powercli隨筆 - PowerCLI script to sequentially Storage vMotion VMs from a CSV File

Powercli隨筆 - PowerCLI script to sequentially Storage vMotion VMs from a CSV File

PowerCLI script to sequentially Storage vMotion VMs from a CSV File

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" $Datastore Get-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 Name VM1 VM2 VM3

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++.