是否可以获得虚拟机的实际硬盘使用率?
Measure-VM -Name * | select-object -property TotalDiskAllocation
TotalDiskAllocation属性获取分配给VM的总磁盘空间,即使这很有用,我还需要知道实际使用了多少。
例如,如果一个VM有150 GB的已分配内存且它只使用50 GB,那么是否有任何Powershell命令可以提取50 GB?如果是,我将如何将该脚本合并到上面的脚本中?
答案 0 :(得分:0)
根据您尝试使用Measure-VM,我假设您使用的是Hyper-V。我在我的一个Hyper-V脚本中使用类似的东西:
(Get-VM dechiro1).HardDrives | ForEach {
$GetVhd = Get-VHD -Path $_.Path
[pscustomobject]@{
Name = $_.Name
Type = $GetVhd.VhdType
ProvisionedGB = ($GetVhd.Size / 1GB)
CommittedGB = ($GetVhd.FileSize / 1GB)
}
}
基本上,对于每个虚拟机的硬盘驱动器,使用Get-VHD获取VHD详细信息,其中包括完整大小和我所称的承诺大小(磁盘上的实际空间)。
示例输出:
Name Type ProvisionedGB CommittedGB
---- ---- ------------- -----------
Hard Drive on IDE controll... Dynamic 20 0.00390625
Hard Drive on IDE controll... Dynamic 40 0.00390625
修改强>:
如果您想从每个VM中提取并将VM名称包含在返回的对象中,并且您更喜欢使用管道表单,则可以使用:
Get-VM | ForEach { $Vm = $_; $_.HardDrives } | ForEach {
$GetVhd = Get-VHD -Path $_.Path
[pscustomobject]@{
Vm = $Vm.Name
Name = $_.Name
Type = $GetVhd.VhdType
ProvisionedGB = ($GetVhd.Size / 1GB)
CommittedGB = ($GetVhd.FileSize / 1GB)
}
}