我希望从天蓝色存储 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 模块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.
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
谢谢伊万。我将我的脚本与你的脚本进行了比较,发现我在出现问题的 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