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

如何使用powershell获取占特定数据存储区使用空间25%以上的vmware vm列表?,powershell,vmware,powercli,Powershell,Vmware,Powercli,我需要得到vm列表,它在特定的数据存储中有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

我需要得到vm列表,它在特定的数据存储中有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 
请帮助我获取vm列表,该列表在特定数据存储中有25%的已用空间。。 提前多谢

$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

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


您仍然需要决定是否愿意迁移几个“大”VM而不是许多“小”VM。还要考虑到,您可能需要考虑DRS主机或vm关联规则。

您是指数据存储中分配给它的空间的25%,还是整个数据存储的25%?我需要将数据存储中分配给它的25%空间的vm列表迁移到另一个数据存储。为了释放源数据存储@spencer中的空间,请帮助我解决此问题。。将@Spencer添加到第一行|会为我节省很多时间吗?{$\ PercentageFreeSpace-gt“25”}我需要分配给25%数据存储空间的vm列表。不确定您的意思,最好用示例列表更新问题。我需要释放25%的数据存储空间。。因此,我需要迁移该数据存储中分配的25%的vm空间。。明白吗?谢谢@manuel。。它似乎工作得很好。。其中一个疑问是$dsCapacityThreshold=$ds.CapacityGB/4。这里面的4是什么?无论是40%还是其他什么?总容量/4为1/4,即25%