You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让PowerShell脚本获取存储账户所有容器的最旧10个Blob?

解决方法

你的脚本问题出在排序后取结果的方向错误,且可能包含存储容器中的虚拟目录(若存在)。修改后的脚本会遍历所有容器的所有文件,统一排序后取出最旧的10个:

$storageAccountName = "aaa"
$resourceGroup = "bbb"

# 获取存储账户密钥并创建上下文
$storageAccountKey = (Get-AzStorageAccountKey -ResourceGroupName $resourceGroup -Name $storageAccountName).Value[0]
$context = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

# 获取所有容器,遍历每个容器获取所有块Blob(排除虚拟目录)
$allBlobs = Get-AzStorageContainer -Context $context | ForEach-Object {
    Get-AzStorageBlob -Container $_.Name -Context $context -BlobType BlockBlob
}

# 按LastModified升序排序(最旧的在前),取前10个
$oldest10Blobs = $allBlobs | Sort-Object -Property LastModified | Select-Object -First 10

# 输出结果
$oldest10Blobs

关键修改点说明:

  • 移除未使用的$storageAccount变量,消除代码冗余
  • 创建上下文时使用自动获取的存储账户密钥,替代硬编码的'xxx',提升安全性和可维护性
  • 添加-BlobType BlockBlob参数,排除容器中的虚拟目录,确保只获取实际文件
  • 将Select-Object -last 10改为Select-Object -First 10:按LastModified升序排序后,最旧的文件排在结果集最前面,取前10个即为所有容器中最旧的10个文件
  • 将结果分步存储到变量中,方便后续调试或扩展使用

内容的提问来源于stack exchange,提问作者DBA Guy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:05:14