使用PowerShell的Get-AzStorageBlobContent时遇412错误如何解决?
解决Get-AzStorageBlobContent返回412错误但文件下载成功的问题
错误原因
这个412预条件失败错误,是因为Get-AzStorageBlobContent默认会对已存在的本地文件做ETag一致性校验:当本地已有同名文件,且该文件的哈希值与云端Blob的ETag不匹配时,就会触发这个错误。但cmdlet仍会执行下载覆盖操作,所以最终文件能成功下载,但会抛出错误提示。
修复方案
方案1:添加-Force参数跳过校验
直接在命令中加入-Force参数,强制覆盖本地文件并跳过预条件检查,彻底消除错误:
Get-AzStorageBlobContent -Container $containerName -Blob $blobName -Destination $localPath -Context $context -Force
方案2:先清理本地文件再下载
如果不想强制覆盖(比如需要确认本地文件是否可删除),可以先检查并删除本地已有文件,再执行下载:
# 检查本地文件是否存在,存在则删除 if (Test-Path -Path $localPath) { Remove-Item -Path $localPath -Force } # 执行下载 Get-AzStorageBlobContent -Container $containerName -Blob $blobName -Destination $localPath -Context $context
方案3:仅下载不存在的文件
如果只需要在本地文件不存在时才下载,可以先判断文件是否存在,不存在再执行下载命令:
if (-not (Test-Path -Path $localPath)) { Get-AzStorageBlobContent -Container $containerName -Blob $blobName -Destination $localPath -Context $context }
内容的提问来源于stack exchange,提问作者Sandy
相关产品推荐
相关产品推荐

