Azure门户终端执行AzCopy提示命令未识别如何处理
报错原因
你遇到的“AzCopy未被识别为可执行程序”报错,来自两个核心问题:
- Azure门户的PowerShell Cloud Shell默认没有预置AzCopy工具,需要手动部署后才能调用
- 你脚本中使用的是旧版Windows平台AzCopy(v7/v8系列)的表操作语法,这类旧版本仅原生支持Windows系统,而Cloud Shell底层运行在Linux容器中,语法和运行环境都需要调整。
解决步骤
1. 先在Cloud Shell中部署AzCopy
在Cloud Shell的PowerShell提示符下依次执行以下命令,完成AzCopy的安装部署:
# 下载适配Linux的最新版AzCopy压缩包 wget https://aka.ms/downloadazcopy-v10-linux -O azcopy.tar.gz # 解压压缩包 tar -xf azcopy.tar.gz --strip-components=1 # 将可执行文件移动到系统PATH路径下 sudo mv azcopy /usr/local/bin/ # 验证安装是否成功,正常返回版本号即部署完成 azcopy --version
2. 调整现有脚本的AzCopy调用语法
当前最新版AzCopy v10的表存储操作语法已更新,不再使用旧版/Source这类斜杠开头的参数,你需要把脚本中两处AzCopy的调用分别替换为新语法:
替换原表导出到Blob存储的代码:
原代码:
AzCopy /Source:$SrcTableUrl ` /Dest:$DstBlobUrl/$TableName ` /SourceKey:$SrcAccessKey ` /Destkey:$DstAccessKey
替换为:
azcopy copy $SrcTableUrl $DstBlobUrl/$TableName --source-key $SrcAccessKey --dest-key $DstAccessKey
替换原Blob导入到目标表存储的代码:
原代码:
AzCopy /Source:$DstBlobUrl/$TableName ` /Dest:$DstTableUrl/$TableName ` /SourceKey:$DstAccessKey ` /DestKey:$DstAccessKey ` /Manifest:$manifest ` /EntityOperation:"InsertOrReplace"
替换为:
azcopy copy $DstBlobUrl/$TableName $DstTableUrl/$TableName --source-key $DstAccessKey --dest-key $DstAccessKey --entity-operation InsertOrReplace
补充说明
- Cloud Shell的临时存储会在会话超时后清空,每次重新打开Cloud Shell都需要重新执行部署步骤,你可以把部署命令写到脚本开头,每次运行自动完成AzCopy的部署
- 若你需要迁移的表数据量较大,建议在本地Windows环境运行旧版AzCopy v7.3(对表存储操作支持最完善的Windows版本),避免Cloud Shell会话超时导致迁移任务中断
内容的提问来源于stack exchange,提问作者Alex Gordon
相关产品推荐
相关产品推荐

