PowerShell Azure Blob快照保留

时间:2017-11-02 09:54:33

标签: powershell azure

我想使用PowerShell脚本在azure中管理我的blob快照。

我已经有了一个脚本,可以每小时创建一个blob快照。

现在我想创建一个删除旧快照的查询。

如果快照超过5天,则保留当天的最后一个快照。所有超过30天的快照都将被删除。

我该怎么做?

我的代码会在30天后删除所有快照:

foreach ($CloudBlockBlob in $ListOfBlobs)
    {
      if ($CloudBlockBlob.IsSnapshot)
      {
        if ($CloudBlockBlob.SnapshotTime.DateTime -le $RetentionTime )
        {
          $CloudBlockBlob.Delete()
          if (!$?) { Write-Host "Snapshot cannot be deleted. Error on Line " + Get-CurrentLineNumber }
        }
      }
    }

1 个答案:

答案 0 :(得分:0)

我们可以使用此脚本删除超过5天的快照blob:

$deletetime = [datetime]::today.adddays(-5).tostring('yyyyMMdd')
$StorageAccountName = "jasondisk3"
$StorageAccountKey = "m+kQwLuQZiI3LMoMTyAI8dq4qul4s8fAIHGPMTD/AG2j+TPHBpttq5hXRmTaQ=="
$ContainerName = "jasonvm" 
$Ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
$ListBlob = Get-AzureStorageBlob –Context $Ctx -Container $ContainerName | Where-Object {$_.ICloudBlob.IsSnapshot -and $_.SnapshotTime -ne $null -and (($_.SnapshotTime.localdatetime).ToString('yyyyMMdd') -lt $deletetime) }
foreach($b in $listblob) {
$b.ICloudBlob.Delete()
}

注意:

此PowerShell将删除该容器中的所有blob且超过5天。

<强>更新

这里有一个删除一天快照并保留最新快照的脚本,请参考:

$deletetime = [datetime]::today.adddays(-1).tostring('yyyyMMdd')
$StorageAccountName = "jasondisk3"
$StorageAccountKey = "m+kQwLuQZiI3LMoMTyAI8K40gkOD+ZaTxxxs8fAIHGPMTD/AG2j+TPHBpttq5hXRmTaQ=="
$ContainerName = "jasonvm" 
$Ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
$a = Get-AzureStorageBlob -Container $ContainerName -Context $Ctx | select -ExpandProperty name -Unique
foreach($c in $a){$d = $c.split('.')[0]; $e = $d +'*' ; $f = Get-AzureStorageBlob –Context $Ctx -Container $ContainerName -blob $e | Where-Object {$_.ICloudBlob.IsSnapshot -and $_.SnapshotTime -ne $null -and (($_.SnapshotTime.localdatetime).ToString('yyyyMMdd') -eq '20171110') }; $ff = $f[-1];foreach($qq in $f){if($qq -ne $ff){$qq.ICloudBlob.Delete()}} }

您可以对其进行修改以删除其他日期,并在日期中添加foreach

希望这会有所帮助:)