如何获取虚拟机的实际硬盘内存?
How to Get Actual Hard Disk Memory of A VM?
是否可以获取虚拟机的实际硬盘使用率?
Measure-VM -Name * | select-object -property TotalDiskAllocation
TotalDiskAllocation 属性 获取分配给 VM 的总磁盘 space,尽管这很有用,但我还需要知道实际使用了多少。
例如,如果虚拟机分配了 150 GB 的内存,但它只使用了 50 GB,是否有任何 Powershell 命令可以提取这 50 GB?如果是,我如何才能将该脚本合并到上面的脚本中?
根据您尝试使用 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 详细信息,包括完整大小和我所说的承诺大小(磁盘上的实际 space)。
示例输出:
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)
}
}
是否可以获取虚拟机的实际硬盘使用率?
Measure-VM -Name * | select-object -property TotalDiskAllocation
TotalDiskAllocation 属性 获取分配给 VM 的总磁盘 space,尽管这很有用,但我还需要知道实际使用了多少。
例如,如果虚拟机分配了 150 GB 的内存,但它只使用了 50 GB,是否有任何 Powershell 命令可以提取这 50 GB?如果是,我如何才能将该脚本合并到上面的脚本中?
根据您尝试使用 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 详细信息,包括完整大小和我所说的承诺大小(磁盘上的实际 space)。
示例输出:
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)
}
}