Here is an example script that scales a little higher and would assume that you have standardized on a group of datastores for these VM's. The example shown assumes you have a bunch of VM's in 4 different volumes. nas1_nfs_os1/nas1_nfs_data1 and nas2_nfs_os2/nas2_nfs_data2. Then you have 4 new volumes as a home for them. vmware_nfs_os3/vmware_nfs_data3, vmware_nfs_os4/vmware_nfs_data4. Respectively you want to move all of the VM's from 1 -> 3, and 2 -> 4. I also have some extra lines to move configs that are currently on data1/data2 to the proper location in the new OS volumes(some people got lazy with provisioning). You could have more/less original/new volume combinations by tweaking the if/elseif lines. It is important to make sure not to move anything if it doesn't match one of your examples, that way if you have disks with dedicated volumes you don't move those. This is where the else line says if it doesn't match one of the migration volumes just leave it where it's at.
This script loops through the iteration of disks regardless of the number and says if the old one is x, then it should be y. If it's not x, then leave it where it is.
This would help you do a big migration from several different volumes to several new volumes for a bunch of VM's. It is also set to start 5 tasks at a time, which can be modified by editing the $numtasks.Count -lt 5 line. This is tuned to my environment using the other example script that was available in previous posts. So it will obviously take some tweaking to work in your situation, but it's a good start for anyone doing a big move.
If you are using NetApp/DeDupe you have to be careful not to move them all in one big shot without re-running the dedupe jobs or the new volumes won't be big enough to house what fit in your old volumes.