我需要获取虚拟机列表,该列表具有特定数据存储区中已用空间的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%已用空间的虚拟机列表。 提前谢谢
答案 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