Как получить список vmware vm, который занимает более 25% используемого пространства конкретного хранилища данных с помощью powershell? - PullRequest
0 голосов
/ 10 декабря 2018

Мне нужно получить список виртуальных машин, у которого есть 25% используемого пространства в конкретном хранилище данных.

$vmdatastore = Get-Datastore "XXXXX-LUN001" | select Name, @{N = Capacity";E={[math]::Round($_.ExtensionData.Summary.Capacity / 1GB, 2)}},@{N="FreeSpace";E={[math]::Round($_.ExtensionData.Summary.FreeSpace/1GB, 2)}}, @{N="PercentageFreeSpace";E={[math]::Round(($_.FreeSpaceGB)  /($_.CapacityGB) * 100, 2)}} 

$vmlists=Get-Datastore "XXXXX-LUN001" | Get-VM | Select name, @{N="DSName";E={$vmdatastore.Name}},usedspacegb,  provisionedspacegb 

Помогите мне получить список виртуальных машин, у которого есть 25% используемого пространства в конкретном хранилище данных ..Большое спасибо заранее

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Не совсем уверен, что это именно то, что вам нужно, но если вам нужен список виртуальных машин, которые вместе занимают не менее 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, которые вы должны принять во внимание.

0 голосов
/ 11 декабря 2018
$gt25 = $vmdatastore | ?{$_.PercentageFreeSpace -gt 25}
Get-Datastore -name $gt25 | Get-VM

После комментария ... как насчет

 $vmdatastore =  Get-Datastore "xxxxyourdatastorexxx" | select Name, @{N = 
 "Capacity";E={[math]::Round($_.ExtensionData.Summ
  ary.Capacity / 1GB, 2)}}, @{N = "QuarterOfThat";E= 
 {[math]::Round($_.ExtensionData.Summary.Capacity / 1GB / 4, 2)}}

 $vmlist = Get-Datastore ABN_NP_CORE2 | get-vm | ? {$_.usedspaceGB -gt 
 $vmdatastore.QuarterOfThat}


 $vmlist.usedspaceGB
...