如何使用 powershell 获取特定数据存储超过 25% 已用 space 的 vmware 虚拟机列表?
How to get vmware vm list which has more than 25% of used space of the particular datastore using powershell?
我需要获取 vm 列表,其中包含特定数据存储中已用 space 的 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% space..
非常感谢
$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
不太确定,如果那是您想要的,但如果您想要一个 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% 的数据存储总容量。 (或者此数据存储上的所有虚拟机,如果它们一起没有达到阈值。)
如果您更愿意迁移几个 "big" 个虚拟机而不是多个 "small" 个虚拟机,您仍然需要决定。还要考虑到,您可能必须考虑 DRS 主机或虚拟机亲和性规则。
我需要获取 vm 列表,其中包含特定数据存储中已用 space 的 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% space.. 非常感谢
$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
不太确定,如果那是您想要的,但如果您想要一个 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% 的数据存储总容量。 (或者此数据存储上的所有虚拟机,如果它们一起没有达到阈值。)
如果您更愿意迁移几个 "big" 个虚拟机而不是多个 "small" 个虚拟机,您仍然需要决定。还要考虑到,您可能必须考虑 DRS 主机或虚拟机亲和性规则。