Не совсем уверен, что это именно то, что вам нужно, но если вам нужен список виртуальных машин, которые вместе занимают не менее 25% емкости вашего хранилища данных, этот подход может помочь:
$ds = Get-Datastore "XXXXX-LUN001"
$dsVMs = Get-VM -Datastore $ds
$vmUsedSpace = 0
$vmMigrationCandidates = @()
$dsCapacityThreshold = $ds.CapacityGB / 4
while ($vmUsedSpace -le $dsCapacityThreshold -and $dsVMs.Count -gt 0)
{
$vm,$dsVMs = $dsVMs
$vmUsedSpace += $vm.UsedSpaceGB
$vmMigrationCandidates += $vm
}
$vmMigrationCandidates
будет содержать список виртуальных машин, которые вместе используют не менее 25% общей емкости хранилищ данных.(Или все vms в этом хранилище данных, если они вместе не достигают порога.)
Вам все еще нужно решить, предпочитаете ли вы переносить несколько «больших» vms вместо множества «маленьких».Также примите во внимание, что могут быть правила хоста DRS или vm-affinity, которые вы должны принять во внимание.