如何使用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
相关产品推荐
相关产品推荐

