Shubhendra Pratap
Shubhendra Pratap

Reputation: 11

To delete objects from an Azure Storage Blob in bulk which are 'x' days older

I am looking to delete all files from azure storage blob which are older than 'x' days. I am trying the below code but is not working:

$StorageAccountName = '<name>'
$StorageAccountKey = '<key>'

$Ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey
Get-AzureStorageBlob -Container "reports" -Context $Ctx -Blob *.csv
where {$_.LastModified -le (get-date).AddDays(-30) } | Remove-AzureStorageBlob

I referred the following doc but the query is not working for conditional deletion. link

Upvotes: 0

Views: 4701

Answers (3)

Shubhendra Pratap
Shubhendra Pratap

Reputation: 11

Thank you Ivan. I compared my script with yours and found that I was missing a pipe before the where condition which was issue. After putting the pipe, I am able to delete the files based on condition. Didn't needed to go to AzureAz. The script which is working now is :

$StorageAccountName = 'xx'
$StorageAccountKey = 'yyy'

$ctx = New-AzureStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $StorageAccountKey

Get-AzureStorageBlob -Container "abc" -Blob *.pdf -Context $ctx | where {$_.LastModified -le (Get-Date).AddDays(-4)} | Remove-AzureStorageBlob

Upvotes: 1

Ivan Glasenberg
Ivan Glasenberg

Reputation: 29950

I suggest you use the new azure powershell module AZ.

After install the new AZ module, try the code below:

$accountname="xx" 
$accountkey="xxx"
$ctx = New-AzStorageContext -StorageAccountName $accountname -StorageAccountKey $accountkey

Get-AzStorageBlob -Container "aa1" -Blob *.jpg -Context $ctx | where {$_.LastModified -le (Get-Date).AddDays(-1)} | Remove-AzStorageBlob

After the code running, you can check on azure portal or use Get-AzStorageBlob cmdlet to see if all the specified files are deleted. In my case, all the files' date < "1 day ago" are deleted.

enter image description here

Upvotes: 5

Agrawal Shraddha
Agrawal Shraddha

Reputation: 764

Azure storage have feature "Manage the Azure Blob storage lifecycle". https://learn.microsoft.com/en-us/azure/storage/blobs/storage-lifecycle-management-concepts

For your test case you can directly refer https://learn.microsoft.com/en-us/azure/storage/blobs/storage-lifecycle-management-concepts#powershell

$action = Add-AzStorageAccountManagementPolicyAction -BaseBlobAction Delete -daysAfterModificationGreaterThan 2555

Upvotes: 2

Related Questions