删除早于X天的Azure快照
我已经接近我需要的了,但是我缺少了一些东西,因为快照没有被删除。我想我的datetime字符串不是完全正确的,所以我来这里寻求一些帮助。这是我当前的PS代码删除早于X天的Azure快照,azure,powershell,azure-storage,Azure,Powershell,Azure Storage,我已经接近我需要的了,但是我缺少了一些东西,因为快照没有被删除。我想我的datetime字符串不是完全正确的,所以我来这里寻求一些帮助。这是我当前的PS代码 rg = 'snapshots' $snapshotnames = (Get-AzureRmSnapshot -ResourceGroupName $rg).name foreach($snapname in $snapshotnames) { Get-AzureRmSnapshot -ResourceGroupName $rg
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
尝试下面的命令,示例将删除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
我的快照:
Get-AzureRmSnapshot -ResourceGroupName joywebapp -SnapshotName joytestss1 | ?{($_.TimeCreated) -lt ([datetime]::UtcNow.AddDays(-10))} | remove-azurermsnapshot -force
还要检查门户中的日志:
Get-AzureRmSnapshot -ResourceGroupName joywebapp -SnapshotName joytestss1 | ?{($_.TimeCreated) -lt ([datetime]::UtcNow.AddDays(-10))} | remove-azurermsnapshot -force
这里有一个类似的问题,请参考此问题。您试图使用
-lt
比较两个字符串值,但这不会以您想要的方式工作。尝试删除.ToString()
,您可能会得到更好的结果,而不是比较本机日期时间
对象:)如下:?{($.TimeCreated)-lt([datetime]::Today.AddDays(-1))}删除azurermsnapshot-force
我运行了此操作,但没有删除任何内容。在今天(2018年9月20日)创建的上述资源组中有一个vm,$rg='snapshots'$snapshotnames=(Get-AzureRmSnapshot-ResourceGroupName$rg).name foreach($snapshotnames中的snapname){Get-AzureRmSnapshot-ResourceGroupName$rg-SnapshotName$SnapshotName |?{($.TimeCreated)-lt([datetime]::Todays.AddDays(-1))]| remove azurermsnapshot-force | remove azurermsnapshot-force}
谢谢这对我很有用。我去掉了.tostring,并将时间部分格式化<代码>获取AzureRmSnapshot-ResourceGroupName$rg-SnapshotName$snapname |?{($..TimeCreated)-lt([datetime]::Now.AddDays(0))}| | |删除AzureRmSnapshot-force这是我的代码部分,非常感谢@James C的帮助。