我有一个powershell脚本来生成HTML报告,该报告包括所有虚拟机和一台hyper-v服务器的快照。

起初,我使用Get-VM获得了所有虚拟机。然后,我遍历该列表,并使用Get-VMSnapshot获取一个虚拟机的所有快照。

我遇到的问题是,我看不到如何从$VMSnapshot到真实文件以获取其大小。

这是我的代码:

$VMs = Get-VM -ComputerName $Computers
foreach ($VM in $VMs) {
    $VMSnapshots = Get-VMSnapshot -VMName $VM.VMName -ComputerName $VM.ComputerName | Select ComputerName, VMNAME, CreationTime, Path, Name | sort CreationTime
    foreach ($VMSnapshot in $VMSnapshots) {
        #How to get the filesize of that snapshot?
    }
}

我知道,可以使用$VMSnapshotSize gci -Path $VMSnapshot.Path -Filter *.avhd*获取文件大小,但是由于该目录中存在多个快照,因此$VMSnapshot$VMSnapshotSize之间没有关系。

最佳答案

试试这个代码:

Get-VMSnapshot -VMName $VM.VMName | select -ExpandProperty HardDrives | % { Get-VHD $_.Path | select Path, FileSize }

07-27 22:36