$VMs = Get-VM itdprint1a.nd.gov,itdprint1b.nd.gov | where-object PowerState -eq PoweredOn $count=0 ForEach ($VM in $VMs) { $count++ $Cluster = $null $DatastoreCluster = $null $DatastoreLargest = $null $DatastoreDestination = $Null $vCenter = $null $Templ = $null $vCenter = $VM.uid.split('@')[1].split('.')[0] $TEMPL = Get-Datastore "*TEMPL*" | where-object Uid -like "*$vCenter*" $Cluster = $VM | Get-Cluster $DatastoreCluster = $VM | Get-DatastoreCluster $DatastoreLargest = $DatastoreCluster | Get-Datastore | sort-object FreeSpaceGB -Descending | select -first 1 If($DatastoreLargest.FreeSpaceGB -gt $VM.UsedSpaceGB) { $DatastoreDestination = $DatastoreCluster } Else { $DatastoreDestination = $TEMPL } If($Count -le 8) { New-VM -VM $VM -Name ($VM.Name + "_backup20191021") -ResourcePool $Cluster -Datastore $DatastoreDestination -RunAsync } else { New-VM -VM $VM -Name ($VM.Name + "_backup20191021") -ResourcePool $Cluster -Datastore $DatastoreDestination start-sleep -seconds 180 $count = 0 } }