如何用PowerShell将Azure VM文件复制到Blob存储容器指定文件夹?
PowerShell命令:从Azure VM按文件名复制文件到Blob存储指定文件夹
前置准备
- 确保Azure VM已安装
Az.Storage模块,未安装则执行:Install-Module -Name Az.Storage -Force -AllowClobber - 若使用VM托管身份连接Azure,需先为VM分配存储账户的Blob数据参与者权限;若用账户登录,执行
Connect-AzAccount完成身份验证。
核心脚本
# 配置基础参数 $storageAccountName = "你的存储账户名称" $containerName = "containerName" $localFileDir = "VM本地文件目录(如C:\UserReports\)" # 获取目标目录下的所有文件 $targetFiles = Get-ChildItem -Path $localFileDir -File # 遍历文件并按规则上传到指定Blob子路径 foreach ($file in $targetFiles) { # 根据文件名匹配目标Blob路径 switch -Wildcard ($file.Name) { "*ReportA*" { $blobSubPath = "UserA/Report/A/$($file.Name)" } "*ReportB*" { $blobSubPath = "UserA/Report/B/$($file.Name)" } default { Write-Host "文件 $($file.Name) 不匹配规则,跳过上传" continue } } # 获取存储账户上下文 $storageCtx = (Get-AzStorageAccount -Name $storageAccountName).Context # 执行文件上传 Set-AzStorageBlobContent -Context $storageCtx ` -Container $containerName ` -File $file.FullName ` -Blob $blobSubPath ` -Force }
自定义说明
- 可根据实际文件名规则修改
switch语句中的匹配逻辑,如需正则匹配可替换为switch -Regex -Force参数会覆盖Blob中同名文件,无需覆盖可移除该参数- 批量处理大量文件时,可添加
-ErrorAction SilentlyContinue忽略单个文件上传错误
内容的提问来源于stack exchange,提问作者George
相关产品推荐
相关产品推荐

