【问题标题】:Powershell script to delete the .bak files older than 30 days in all containers in one single script用于在一个脚本中删除所有容器中 30 天以上的 .bak 文件的 Powershell 脚本
【发布时间】:2021-03-20 19:00:29
【问题描述】:

我正在尝试使用 for 循环来选择使用此脚本的所有容器

param($TimerBlob)
    
 $CleanupTime = [DateTime]::UtcNow.AddMinutes(-1)
 $context = New-AzStorageContext -StorageAccountName **** -StorageAccountKey ****
$containername = @("mydbstore", "mydbstore2","mydbstore3")   # List of containers - 
For ($i=0; $i -lt $containername.Length; $i++) {
    
 Get-AzStorageBlob -Container $containername[$i] -Context $context 
 Where-Object { $_.LastModified.UtcDateTime -lt $CleanupTime -and $_.BlobType -eq "PageBlob" -and $_.Name -like "*.bak"} |
 Remove-AzStorageBlob
}

输出列出所有容器中的所有文件,但不会删除它们

【问题讨论】:

  • 检查您的代码。在-Context $context 之后,您需要一个管道|
  • 代码里你的清理时间是一分钟前,标题里是30天。
  • 是的,我没有错误地添加管道,但仍然存在同样的错误
  • 我在一分钟前用作测试,如果下面的脚本正常工作,可以更改为 30 天

标签: azure powershell containers blob


【解决方案1】:

好奇,get-azstorageblob | 的输出是什么? ?{} 没有管道进入 remove-azstorageblob? 您是否获得了与您的过滤器匹配的项目列表?

【讨论】:

  • 是的,只有我的存储帐户中的容器列表,但不会删除这些容器中的文件
  • 如果我添加这个'|'在 getazstorageblob 然后它不会给出任何错误或项目列表,也不会删除它们
猜你喜欢
  • 2020-01-04
  • 2023-01-17
  • 1970-01-01
  • 2020-07-14
  • 2019-12-23
  • 2020-01-02
  • 2020-09-25
  • 2023-03-24
  • 1970-01-01
相关资源
最近更新 更多