【问题标题】:Get the size to a snapshot via Powershell in Hyper-V通过 Hyper-V 中的 Powershell 获取快照的大小
【发布时间】:2017-01-09 15:42:20
【问题描述】:

晚上好,我也在开发一个 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 设置为此状态,则文件创建时间会更改,因此我之前的方法完全停止工作。

为什么我想知道的是,有没有更好的方法来比较这两个结果,甚至更好的方法是在没有这种原始比较的情况下获得快照大小?

提前感谢您的帮助。

【问题讨论】:

    标签: powershell snapshot hyper-v


    【解决方案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}}
    

    希望对你有帮助。

    【讨论】:

    • 第一个不起作用,因为快照的信息集不包含它自己的大小,不知何故 Hyper-V 的创建者似乎没有意识到大小是一个重要的值,如果你必须处理任何类型的文件。第二个遗憾地只返回 VM 名称,NumSnapshotsTotalSnapShotSizeMB 的列保持为空,一个屏幕截图的大小也是我需要的,遗憾的是所有快照的总大小对我没有太大帮助。但我肯定会尝试使用 Measure-Object,这似乎是我的问题的潜在解决方案。
    • @Etaila:只需对第二个代码稍作调整,您就可以选择 .我现在没有可供选择的基础设施。我需要时间来建造一个。希望对你有帮助
    • @Etaila :如果对您有帮助,请接受答案
    • 到目前为止,它有所帮助,但没有解决我的问题,所以如果其他人有解决方案的想法,我会稍等片刻。
    • 您能发布您正在尝试的内容吗?也许我可以调查一下,
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多