晚上好,我正在开发一个C#,它应该可以帮助用户控制服务器上的虚拟机。 现在,我已创建了用于创建和擦除这些VM的快照的功能,并希望创建一个功能来列出VM的所有快照,包括视图选定的Snapshot参数。用:
Invoke-Command -ComputerName ServerName -ScriptBlock { Get-VMSnapshot -VMName VMName |Select-Object}
我能够获得几乎所有请求的信息,但是能够获得快照本身的总大小。
但是我可以使用此命令获得大小:
Invoke-Command -ComputerName ServerName -ScriptBlock {Get-VM -VMName VMName | gci -r -Filter *.avhd*| select @{Name="MB";Expression={$_.Length / 1Mb}}, *}
不要将这两个结果放在一起我将这两个结果的创建时间与最多10秒的容差进行了比较并取得了最接近的结果。 (我知道原始),但现在它变得更加复杂。
如果我现在使用快照将VM设置为此状态,则文件创建的时间会更改,因此我之前的方法将完全停止工作。
为什么我想知道的是,是否有更好的方法来比较这两个结果,甚至更好,以获得没有这种原始比较的快照大小?
提前感谢您的帮助。
答案 0 :(得分:1)
单行以下应该满足您的需求。
1)
Get-VM | Sort Name | Get-Snapshot | Where { $_.Name.Length -gt 0 } | Select VM,Name,Created,SizeMB
2)
Get-VM | Format-Table Name, @{Label="NumSnapshots";Expression={(Get-Snapshot -VM $_ | Measure-Object).Count}}, @{Label="TotalSnapShotSizeMB";Expression={(Get-Snapshot -VM $_ | Measure-Object -Sum SizeMB).Sum}}
希望它有所帮助。