首页 > 解决方案 > 如何每 10 分钟删除一次托管磁盘快照

问题描述

我有下面的脚本,我正在使用它来删除早于 10 分钟的快照并保留不早于 10 分钟的快照,我有下面的脚本,但它没有按预期工作,谁能告诉我发生了什么错误的?

foreach($snapname in $snapshotnames)
{
    Get-AzureRmSnapshot -ResourceGroupName $rg  -SnapshotName $snapname |?{$_.Name -Like "*-Server1*"} | ?{($_.TimeCreated).ToString('yyyyMMdd') -lt ([datetime]::Now.AddMinutes(-10).tostring('yyyymmdd'))} | remove-azurermsnapshot -force
}

标签: azurepowershell

解决方案


您应该使用[datetime]::UtcNow[datetime]::Now不是使用.tostring('yyyymmdd').

所以你的命令应该是:

foreach($snapname in $snapshotnames)
{
    Get-AzureRmSnapshot -ResourceGroupName $rg -SnapshotName $snapname | ?{$_.Name -Like "*-Server1*"} | ?{($_.TimeCreated) -lt ([datetime]::UtcNow.AddMinutes(-10))} | remove-azurermsnapshot -force
}

我的具体测试命令:

Get-AzureRmSnapshot -ResourceGroupName "<ResourceGroupName>" -SnapshotName "<SnapshotName>" | ?{($_.TimeCreated) -lt ([datetime]::UtcNow.AddMinutes(-10))} | remove-azurermsnapshot -force

结果截图:

在此处输入图像描述


推荐阅读