Azure 命令行工具

Azure PowerShell、Azure CLI 和 AzCopy 分别用于脚本化管理 Azure 资源,以及在本地与 Azure Storage 之间或不同存储账户之间传输数据。

工具 主要用途
Azure PowerShell 在 PowerShell 中使用 Az 模块的 cmdlet 管理 Azure 资源
Azure CLI(az) 在命令行或脚本中管理 Azure 资源
AzCopy(azcopy) 复制和同步 Azure Storage 数据

Azure PowerShell

简介

PowerShell 是跨平台的自动化和脚本环境,可用于系统管理、部署和测试;其管道传递 .NET 对象。Azure PowerShell 的 Az 模块提供一组 cmdlet,用于在 PowerShell 中管理 Azure 资源。

安装

参考:Az 模块介绍、Azure PowerShell 安装指南。

  • 推荐环境:受支持的 PowerShell 7 或更高版本。
  • Windows PowerShell 5.1:需安装 .NET Framework 4.7.2 或更高版本,并更新 PowerShellGet。

在 Windows PowerShell 5.1 中,先更新 PowerShellGet,再安装 Az 模块:

Install-Module -Name PowerShellGet -Force
Install-Module -Name Az -Scope AllUsers -Repository PSGallery -Force

登录 Azure 中国云

Connect-AzAccount -Environment AzureChinaCloud

使用应用身份自动登录

可在 Microsoft Entra ID(原 Azure AD)中创建应用及客户端机密,再在 PowerShell 脚本中使用该应用身份登录。下图是原文保留的操作示例;机密应妥善保管。

应用身份登录示例

清除登录上下文

登录异常时,可先使用 Az 模块提供的命令清除当前用户保存的上下文与凭据,然后重新登录:

Clear-AzContext -Scope CurrentUser
Connect-AzAccount -Environment AzureChinaCloud

原笔记还记录了 Windows 上可能涉及的缓存或上下文文件,供排查旧环境时参考;不要不加区分地批量删除:

  • C:\Users\<yourname>\.azure\AzureRmContext.json
  • C:\Users\<yourname>\.azure\AzureRmContextSettings.json
  • C:\Users\<yourname>\.azure\AzureRmSurvey.json
  • C:\Users\<yourname>\.azure\keystore.cache
  • C:\Users\<yourname>\AppData\Local\.IdentityService\msal.cache

参考:Azure PowerShell 上下文与凭据。

Azure CLI

Azure CLI 是基于 Python 的跨平台命令行工具,用于管理 Azure 资源。

安装

  • Windows:安装 Azure CLI。
  • Linux:按发行版选择安装方式。RHEL/CentOS Stream 应按版本使用官方文档对应的软件源;原笔记中的 yumrepos/azure-cli 配置属于 RHEL 7 路径,RHEL/CentOS 7 已不再获得 Azure CLI 更新。

登录 Azure 中国云

先选择云环境,再交互式登录:

az cloud set -n AzureChinaCloud
az login

登录失败时

如果怀疑本地账户或订阅缓存异常,可参考 Azure CLI 问题记录,执行 az account clear 清除缓存,然后重新运行 az login。清除后必须重新登录,才能继续使用账户相关命令。

Azure CLI 登录报错示例

选择订阅

先完成交互式登录,查看可用订阅,再切换到目标订阅:

az account list --output table
az account set --subscription "<订阅 ID 或名称>"

原笔记以用户账户和具体订阅 ID 演示切换。现在不建议在命令行中使用用户密码登录:这种方式不适用于启用多重身份验证(MFA)的账户;自动化应使用服务主体或托管身份。

参考:管理 Azure CLI 订阅、Azure CLI 登录方式。

AzCopy

AzCopy v10 用于在本地和 Azure Storage 之间,或在不同存储账户之间复制、同步 Blob 和文件。

数据传输路径

存储账户之间的复制可使用服务端到服务端 API,数据不必经过运行 AzCopy 的本地机器。本地与存储账户之间的上传和下载仍会使用本地网络。AzCopy 客户端还负责发起和监控传输。

安装与登录

  1. 参考 AzCopy v10 安装与入门 下载工具;在 Windows 上将 azcopy.exe 所在目录加入 PATH。
  2. 面向 Azure 中国云登录,并按提示在浏览器中输入设备代码:
azcopy login --aad-endpoint https://login.partner.microsoftonline.cn

在存储账户之间复制

参考:使用 AzCopy 在存储账户之间复制 Blob。

azcopy copy "<源 URL>" "<目标 URL>"

实际 URL 和授权方式取决于源、目标账户的设置;使用 Microsoft Entra ID 时,应确认身份在两侧具有所需权限。

性能与内存

参考:优化 AzCopy 性能。

调整并发请求数

可通过环境变量 AZCOPY_CONCURRENCY_VALUE 设置并发请求数;具体值应结合基准测试和环境资源调整。原笔记还保留了通过命令查看设置的截图:

AzCopy 并发设置示例

PowerShell 示例:

$env:AZCOPY_CONCURRENCY_VALUE = 3

减少同步时的资源开销

azcopy sync 会先扫描并比较源、目标。如果只需复制新增或更新的文件、无需删除目标中多余的文件,可使用 copy --overwrite=ifSourceNewer,减少预扫描开销:

azcopy copy "<源 URL>" "<目标 URL>" --overwrite=ifSourceNewer --recursive

如果需要删除目标中源端已不存在的文件,使用 azcopy sync 并按需要设置 --delete-destination。上传或下载时还可通过 AZCOPY_BUFFER_GB 调整缓冲区内存;该变量不严格限制 AzCopy 的总内存用量。

参考:AzCopy sync 命令、优化 AzCopy 性能。