我想将虚拟机ProvisionedSpaceGB与数据存储区FreespaceGB进行比较,如果ProvisionedSpaceGB小于数据存储区的可用空间,则它应该是可用空间,否则空间不可用。
我的以下代码可以在单个虚拟机上正常运行,但是我想在多个VM上执行此操作。
#will be printing datastore FreeSpace for respective vms
$PrintDatastore_Fsize = Get-Vm -Name Terminal1 |
Get-Datastore |
select FreeSpaceGB
#will be printing ProvisionedSpace respective vms
$getvmspace = Get-Vm -Name Terminal1 |
select ProvisionedSpaceGB
if (($PrintDatastore_Fsize).FreeSpaceGB -gt ($getvmspace).ProvisionedSpaceGB) {
"Space is available"
} else {
"space is not available"
}
如何在PowerShell中为以下代码编写嵌套循环。我上面的代码对于单个VM工作正常,但是对于多个VM来说,它不能仅接受一个条件。
$vmList = Get-Content "C:\Program Files (x86)\VMware\scripting\vmlist.txt"
foreach ($PrintDatastore_Fsize in $vmList) {
Get-Vm -Name $PrintDatastore_Fsize |
Get-Datastore |
select FreeSpaceGB
}
foreach ($getvmspace in $vmList) {
Get-Vm -Name $getvmspace |
select ProvisionedSpaceGB
}
if (($PrintDatastore_Fsize).FreeSpaceGB -gt ($getvmspace).ProvisionedSpaceGB) {
Write-Host "Space is available"
} else {
Write-Host "space is not available"
}
实际上,您不需要嵌套循环...有点晚了,如果我没有记错的话,可以尝试以下方法:
$vmList = Get-Content "C:\Program Files (x86)\VMware\scripting\vmlist.txt"
foreach ($VMName in $vmList) {
$VM = Get-Vm -Name $VMName
$VMDataStore = $VM | Get-Datastore
if ($VMDataStore.FreeSpaceGB -gt $VM.ProvisionedSpaceGB) {$SpaceAvailable = $true}
else { $SpaceAvailable = $false}
[PSCustomObject]@{
VMName = $VMName
ProvisionedSpace = $VM.ProvisionedSpaceGB
FreeSpace = $VMDataStore.FreeSpaceGB
SpaceAvailable = $SpaceAvailable
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句