如何使用Powershell获取具有特定数据存储使用空间25%以上的vmware vm列表?

时间:2018-12-10 18:43:34

标签: powershell vmware powercli

我需要获取虚拟机列表,该列表具有特定数据存储区中已用空间的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 :(得分:1)

不太确定,这是否是您想要的,但是如果您想要一个VM列表,这些VM一起至少占数据存储容量的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将保存一个VM列表,这些VM在一起至少使用了数据存储总容量的25%。 (或者该数据存储上的所有虚拟机,如果它们加在一起没有达到阈值。)

如果您要迁移几个“大” vms而不是许多“小” vms,则仍然需要确定。另外还要考虑到,可能需要考虑DRS主机或虚拟机关联性规则。

答案 1 :(得分:0)

$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