从 Azure 存储 Blob 中批量删除“x”天前的对象

问题描述 投票:0回答:3

我希望从天蓝色存储 blob 中删除早于“x”天的所有文件。我正在尝试以下代码但不起作用:

$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

我引用了以下文档,但查询不适用于条件删除。 链接

azure powershell azure-blob-storage
3个回答
5
投票

我建议您使用新的 azure powershell 模块AZ

安装新的 AZ 模块后,尝试以下代码:

$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

代码运行后,您可以在azure门户上检查或使用

Get-AzStorageBlob
cmdlet查看是否所有指定文件都被删除。就我而言,所有文件的日期< "1 day ago" are deleted.


2
投票

Azure 存储具有“管理 Azure Blob 存储生命周期”功能。 https://learn.microsoft.com/en-us/azure/storage/blobs/storage-lifecycle-management-concepts

您的测试用例可以直接参考 https://learn.microsoft.com/en-us/azure/storage/blobs/storage-lifecycle-management-concepts#powershell

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

0
投票

谢谢伊万。我将我的脚本与你的脚本进行了比较,发现我在出现问题的 where 条件之前缺少一个管道。放置管道后,我可以根据情况删除文件。不需要去 AzureAz。 现在正在运行的脚本是:

$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
© www.soinside.com 2019 - 2024. All rights reserved.