删除所有超过 30 天的快照

删除所有超过 30 天的快照

我目前正在使用 VMware 5.1,正在寻找一种方法来防止用户创建的快照变得太旧。VMware 中是否有任何工具允许您管理快照(或者可能有一种方法可以编写脚本)?

理想情况下,我希望自动删除所有超过一个月的快照。

答案1

您可以使用 powercli 轻松完成此操作,因为有一个“remove-shapshot”cmdlet:

$oneMonthAgo = (Get-Date).AddDays(-30)
Get-VM | Foreach-Object {
Get-Snapshot -VM $_ | Foreach-Object {
if($_.Created -lt $oneMonthAgo) {
Remove-Snapshot $_ -Confirm -WhatIf
}}}

我把-Confirm-WhatIf放在那里是因为Remove-Snapshot可能会造成很大的损害——在取出这些参数之前,你要确保它瞄准正确的快照。

答案2

$oneMonthAgo = (Get-Date).AddDays(-30)
Get-VM | Foreach-Object {
Get-Snapshot -VM $_ | Foreach-Object {
if($_.Created -lt $oneMonthAgo) {
Remove-Snapshot $_ -Confirm:$false
}}}

我猜上面的脚本可以,是的,将其添加到任务计划程序中,这仍然会简化工作。建议删除 3 天前的快照。

相关内容