删除 X 天前的 Azure 快照

3

我离所需的东西很近,但是快照还没有被删除。我认为我使用的日期时间字符串不完全正确,因此需要一些帮助。以下是我的当前PS代码。

rg = 'snapshots'
$snapshotnames = (Get-AzureRmSnapshot -ResourceGroupName $rg).name

foreach($snapname in $snapshotnames)
{
    Get-AzureRmSnapshot -ResourceGroupName $rg  -SnapshotName $snapname |
        ?{($_.TimeCreated).ToString('yyyy-MM-dd') -lt ([datetime]::Today.AddDays(-1).tostring('yyyy-MM-dd'))} |
        remove-azurermsnapshot -force
} 

快照的名称是按以下代码格式编排的:Testvm---2018-09-20。
$timestamp = Get-Date -f ---yyyy-MM-dd
$snapshotName = $vmInfo.Name + $timestamp

我认为我的问题区域是这一部分

?{($_.TimeCreated).ToString('yyyy-MM-dd') -lt ([datetime]::Today.AddDays(-1).tostring('yyyy-MM-dd'))} | remove-azurermsnapshot -force

你正在尝试使用“-lt”比较两个字符串值,这不会按照你想要的方式工作。尝试删除“.ToString()”,你可能会得到更好的结果,通过比较本地的“datetime”对象 :) - henrycarteruk
?{($_.TimeCreated) -lt ([datetime]::Today.AddDays(-1))} | remove-azurermsnapshot -force - Ralphael Johnson
我运行了这个程序,但没有删除任何内容。在所述的资源组中有一个虚拟机是今天创建的(2018年9月20日)`$rg ='快照' $snapshotnames =(Get-AzureRmSnapshot -ResourceGroupName $rg)。nameforeach($snapname in $snapshotnames) { Get-AzureRmSnapshot -ResourceGroupName $rg -SnapshotName $snapname |?{($_.TimeCreated) -lt([datetime] :: Today.AddDays(-1))} | remove-azurermsnapshot -force | remove-azurermsnapshot -force}` - Ralphael Johnson
1个回答

1

尝试下面的命令,删除早于 10 天的快照样例。

rg = 'snapshots'
$snapshotnames = (Get-AzureRmSnapshot -ResourceGroupName $rg).name

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

我的特定测试命令:
Get-AzureRmSnapshot -ResourceGroupName joywebapp -SnapshotName joytestss1 | ?{($_.TimeCreated) -lt ([datetime]::UtcNow.AddDays(-10))} | remove-azurermsnapshot -force

enter image description here

我的快照:

enter image description here

同时在门户网站中检查日志:

enter image description here

这里有一个类似的问题,可以参考链接


谢谢,这对我有用。我去掉了.tostring并格式化了时间部分。Get-AzureRmSnapshot -ResourceGroupName $rg -SnapshotName $snapname | ?{($_.TimeCreated) -lt ([datetime]::Now.AddDays(0))} #| remove-azurermsnapshot -force 这是我的代码部分,它可以工作,谢谢你,也感谢@James C的帮助。 - Ralphael Johnson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接