在 Hyper-V 中通过 Powershell 获取快照的大小
Get the size to a snapshot via Powershell in Hyper-V
晚上好,我也在开发C#,应该可以帮助用户控制服务器上的虚拟机。
现在我已经创建了创建和擦除这些 VM 的快照的函数,并想创建一个函数来列出 VM 的所有快照,包括视图选择的快照参数。有:
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 设置为该状态,则文件创建时间会发生变化,因此我之前的方法将完全失效。
为什么我想知道的是,是否有更好的方法来比较这两个结果,甚至更好地获得快照大小而无需进行这种原始比较?
在此先感谢您的帮助。
下面一行就可以满足你的需要。
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}}
希望对您有所帮助。
晚上好,我也在开发C#,应该可以帮助用户控制服务器上的虚拟机。 现在我已经创建了创建和擦除这些 VM 的快照的函数,并想创建一个函数来列出 VM 的所有快照,包括视图选择的快照参数。有:
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 设置为该状态,则文件创建时间会发生变化,因此我之前的方法将完全失效。
为什么我想知道的是,是否有更好的方法来比较这两个结果,甚至更好地获得快照大小而无需进行这种原始比较?
在此先感谢您的帮助。
下面一行就可以满足你的需要。
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}}
希望对您有所帮助。