【发布时间】:2019-06-26 10:17:42
【问题描述】:
我正在创建一个从 Azure Blob 存储中删除 SQL 备份文件的进程。
通过我的研究,我似乎可靠地分阶段删除早于 X 天的备份的唯一方法是将文件名读入文本文件,然后根据包含的字符串日期创建具有过滤结果的第二个文件文件名。
此任务涉及两种日期格式:yyyy_MMdd 和 yyyyMMdd。
我需要查找 120 到 365 天之间的所有文件。有超过 50,000 个文件需要处理,大约 500 个不同的日期字符串需要搜索。
我知道我目前所拥有的可以改进,因为它需要 forever 才能运行(加上它的 RBAR)。如何更有效地处理所有文件?
Get-AzureStorageBlob -Context $context -Container "ContainerName" | SELECT name | Out-File -filepath C:\Users\name\Desktop\Deletions.txt
$Arr1 = @()
$Arr2 = @()
$collection = @()
ForEach($number in 120..365)
{
$Arr1 += (Get-Date).addDays(-$number).ToString("yyyy_MMdd")
$Arr2 += (Get-Date).addDays(-$number).ToString("yyyyMMdd")
}
$collection += $Arr1
$collection += $Arr2
ForEach ($date in $collection)
{
Get-Content -Path C:\Users\name\Desktop\Deletions.txt | Where-Object { $_ -like "*$date*" } | Out-File -filepath C:\Users\name\Desktop\DeleteThese.txt -Append
}
【问题讨论】: