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

如何使用PowerShell删除Azure Storage子容器B内的所有Blob

删除Azure Storage容器A下虚拟目录B内所有Blob的PowerShell脚本

没问题,我来帮你搞定这个需求!先提个小细节:Azure Blob存储本身没有"子容器"的概念,你说的"子容器B"应该是容器A下的虚拟目录(通过Blob名称的前缀实现层级结构)。下面是完整的PowerShell脚本,附带详细说明:

步骤1:确保安装Azure存储模块

如果你的机器还没装Az.Storage模块,先执行下面的命令安装:

Install-Module -Name Az.Storage -Force -AllowClobber

(如果提示权限问题,右键以管理员身份运行PowerShell再执行)

步骤2:完整脚本

# 1. 登录到Azure账户(如果未登录)
Connect-AzAccount

# 2. 设置你的存储账户和容器信息
$storageAccountName = "你的存储账户名称"  # 替换成实际的存储账户名
$parentContainerName = "A"                # 父容器名称
$virtualDirectoryPrefix = "B/"           # 对应你说的"子容器B",注意末尾的斜杠不能少

# 3. 获取存储账户上下文
$storageContext = (Get-AzStorageAccount -Name $storageAccountName).Context

# 4. 获取虚拟目录B下的所有Blob(包含子目录内的Blob)
$blobs = Get-AzStorageBlob -Container $parentContainerName -Context $storageContext -Prefix $virtualDirectoryPrefix -Recursive

# 5. 批量删除Blob
if ($blobs.Count -gt 0) {
    $blobs | Remove-AzStorageBlob -Context $storageContext
    Write-Host "✅ 成功删除虚拟目录B下的所有Blob!共删除 $($blobs.Count) 个文件"
} else {
    Write-Host "ℹ️ 虚拟目录B下没有Blob,无需删除操作。"
}

关键说明

  • 精准控制删除范围:如果不想包含B目录下的子目录Blob,只删除B目录直接的文件,去掉脚本中的-Recursive参数即可。
  • 权限要求:登录的Azure账户需要拥有该存储账户的Storage Blob Data Contributor或更高权限,才能执行删除操作。
  • 大量Blob处理:如果Blob数量极多(比如上万条),脚本会自动分页获取,不用担心遗漏。
  • 自动化场景适配:如果是在无人值守的自动化脚本中运行,可以使用服务主体登录,替换Connect-AzAccount为:
    $tenantId = "你的租户ID"
    $clientId = "服务主体ID"
    $clientSecret = ConvertTo-SecureString "服务主体密钥" -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential($clientId, $clientSecret)
    Connect-AzAccount -ServicePrincipal -Credential $credential -Tenant $tenantId
    

内容的提问来源于stack exchange,提问作者John Abel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:51:02