如何在 Hyper-V 中使用 Powershell 删除特定快照

How to delete a specific snapshot using Powershell in Hyper-V

亲爱的,

我正在尝试删除我们其中一台虚拟机的特定快照,但所有快照都被删除了。

PS C:\Users\abood>  Get-VMSnapshot -VMName KUW-HV01

VMName   Name SnapshotType CreationTime         ParentSnapshotName
------   ---- ------------ ------------         ------------------
KUW-HV01 OLD  Standard     7/22/2020 9:17:48 PM                   
KUW-HV01 NEW  Standard     7/22/2020 9:18:08 PM OLD  

PS C:\Users\abood>  Remove-VMSnapshot -VMName KUW-HV01 -WhatIf | Where-Object {$_.Name -eq "NEW"}
What if: Remove-VMSnapshot will remove snapshot "NEW".
What if: Remove-VMSnapshot will remove snapshot "OLD".

如何只删除“NEW”或“OLD”而保留另一个?

提前致谢,

大多数针对某事采取操作的 cmdlet(例如 Remove-VMSnapshot)将允许您将对象通过管道传递给它们以指定要针对哪些对象采取该操作。例如,您已经使用 Get-VMSnapshot 获取该特定 VM 的两个快照。然后,您可以使用 Where-Object 仅指定要删除的快照并过滤掉任何要保留的快照,如下所示:

Get-VMSnapshot -VMName KUW-HV01 | Where-Object {$_.Name -eq "NEW"}

VMName   Name SnapshotType CreationTime         ParentSnapshotName
------   ---- ------------ ------------         ------------------
KUW-HV01 NEW  Standard     7/22/2020 9:18:08 PM OLD  

然后将其通过管道传输到 Remove-VMSnapshot 以准确指定要删除的内容。

Get-VMSnapshot -VMName KUW-HV01 | Where-Object {$_.Name -eq "NEW"} | Remove-VMSnapshot -WhatIf

结果应该是:

What if: Remove-VMSnapshot will remove snapshot "NEW".