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

PowerShell下载Azure Blob指定文件如何避免保留原目录结构

问题原因

Get-AzureStorageBlobContent 命令默认会保留Blob在容器内的虚拟目录层级,自动在本地创建对应的目录结构,所以才会生成嵌套的子目录。另外你当前脚本的-prefix参数存在错误:你已经指定了容器名为A,容器内的文件路径是B/C.csv,所以前缀应该填B/而非A/B,否则会匹配不到目标文件。

解决方法

遍历匹配到的Blob文件,手动指定目标文件的完整本地路径,直接取Blob的文件名拼接到本地根目录即可,无需使用命令自带的路径生成逻辑。

修正后的脚本如下:

$AccountName = "X"
$ContainerName = "A"
$Key = "dcg"
$Context = New-AzureStorageContext -StorageAccountName $AccountName -StorageAccountKey $Key
# 前缀修正为容器内的路径B/,不需要加容器名A
$Files = Get-AzureStorageBlob -Container $ContainerName -Context $Context -Prefix "B/" | 
    Where-Object {($_.ContentType -eq "application/octet-stream")}
$DestinationPath = "D:\localfolder"

# 遍历每个blob手动指定下载路径,仅保留文件名
foreach ($file in $Files) {
    $fileName = $file.Name.Split('/')[-1]
    $fullDestPath = Join-Path -Path $DestinationPath -ChildPath $fileName
    $file | Get-AzureStorageBlobContent -Destination $fullDestPath -Context $Context -Force
}
  • 代码里通过$file.Name.Split('/')[-1]截取Blob路径的最后一段作为本地文件名,避免保留前面的虚拟目录层级
  • 加上-Force参数可覆盖本地已存在的同名文件,不需要的话可以删除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 05:24:04