跳至主要内容

如何安装 Azure CLI:安装、认证与使用的实用指南

了解如何在任意平台安装 Azure CLI,安全完成认证,并高效管理 Azure 资源。探索命令、技巧与自动化方法,提升工作效率。
· 11分钟 阅读

使用 AI 探索

过去,管理云基础设施往往意味着无数小时在网页门户中点击、在无尽的菜单里穿梭。经历数月对手工流程的挫败之后,发现 Azure CLI 完全改变了我对云资源管理的方式。这不只是另一份安装指南;而是您掌握微软这款最强大的跨平台 Azure 管理工具的路线图。

> 从 Azure Cloud Shell 入手,无需安装即可立即使用。

Hero image showing the Azure CLI running in terminal windows on Windows, macOS, and Linux, demonstrating its cross-platform capability.

Azure CLI 在所有主流操作系统上提供一致而强大的 Azure 资源管理体验。

什么是 Azure CLI?

Azure CLI 是控制云资源的最直接方式。相比浏览器的局限,它提供了一个强大、可脚本化的接口,直接与核心 Azure API 对话。这让您能够在任意操作系统上,用一致可靠的命令进行大规模自动化。

我喜欢 CLI 的一点在于:学习阶段它便于探索服务,等准备正式搭建时,又能把这些步骤原封不动地固化成脚本。秘诀不在于死记硬背命令,而在于善用 az find 或 --help 标志来获取帮助。

Azure CLI 基于 Azure Resource Manager 模型,通过统一的命令结构为所有 Azure 服务提供一致的访问。这一架构决策意味着,无论您管理的是虚拟机、存储账户,还是复杂的网络配置,所使用的都是与 Azure 门户同源的底层 API。

Architecture diagram showing how Azure CLI commands are sent to the Azure Resource Manager (ARM) API, which then orchestrates actions across Azure services like Virtual Machines, Storage, and Networking.

所有 Azure CLI 命令都通过 Azure Resource Manager(ARM)统一处理——这也是驱动 Azure 门户的同一引擎。

Azure CLI 与 Azure 门户

在通过这两种界面管理过数百次 Azure 部署之后,我发现 CLI 在以下方面不可或缺:

  • 自动化与可扩展性:脚本可同时管理数十个资源,这是手动在门户操作无法实现的
  • 版本控制集成:您的基础设施命令成为代码,像其他软件制品一样可追踪、可评审  
  • 跨平台一致性:同样的命令在 Windows、Linux 与 macOS 环境下行为一致
  • 速度与效率:熟练管理员可在数秒内完成复杂操作,而非数分钟

如何安装 Azure CLI

第一步是安装 Azure CLI,但很多人容易在这里踩坑。个人 Mac 的最佳安装方式,与大型企业受限的 Windows 设备完全不同。我们来逐一梳理选项,帮您一次性装对,避免版本不兼容或与 IT 管理员的拉扯。

不同平台的安装

Windows 安装方式

Windows 用户有多条安装路径,可满足不同组织需求:

WinGet 包管理器(推荐给个人开发者):

winget install -e --id Microsoft.AzureCLI

上述命令使用 Windows 的现代包管理器,提供自动更新与干净安装。

MSI 安装程序(最适合企业级部署):

从官方 Azure CLI 下载页面下载最新 MSI,并按向导完成安装。此方式可对安装目录与系统集成进行最精细的控制。

PowerShell MSI 安装(适合自动化安装脚本):

$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi

该 PowerShell 脚本会自动下载、安装并清理 MSI 包。

> 开发机使用 WinGet,生产环境部署使用 MSI 安装程序

Linux 与 WSL 安装

不同 Linux 发行版使用不同包管理器,了解您的发行版能避免常见安装失败:

Ubuntu/Debian(apt):

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

该安装脚本会自动配置微软软件源并安装 Azure CLI。

Red Hat Enterprise Linux/CentOS Stream(dnf):

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo dnf install -y https://packages.microsoft.com/config/rhel/9/packages-microsoft-prod.rpm
sudo dnf install azure-cli

上述命令会在安装前导入微软签名密钥并配置软件源。

通用安装脚本:

curl -L https://aka.ms/InstallAzureCli | bash

该脚本会自动识别您的发行版并选择合适的包管理器。

macOS 安装

macOS 用户可借助 Homebrew 的包管理:

brew update && brew install azure-cli

该命令会更新 Homebrew 包列表并安装最新 Azure CLI 版本。

未安装 Homebrew 的系统:

curl -L https://aka.ms/InstallAzureCli | bash

Docker 容器方式

在 Docker 容器中运行 Azure CLI 可实现完全隔离:

docker run -it mcr.microsoft.com/azure-cli:latest

该命令将启动一个已预装并配置好 Azure CLI 的交互式容器。

Azure Cloud Shell:零安装选项

Azure Cloud Shell 可在无需任何本地安装的情况下立即使用 CLI。这个基于浏览器的环境预装了最新 Azure CLI,并包含 terraform、kubectl 及多种文本编辑器等附加工具。

检查版本与更新

安装完成后,使用全面的版本信息验证您的环境:

az version

该命令会返回详细的 JSON,展示 Azure CLI 版本、核心组件和已安装扩展。

理解这份输出有助于排查兼容性问题,并确保您的脚本针对合适的 CLI 版本。微软发布了详细发行说明,记录不兼容变更与新功能。

> 升级 Azure CLI 版本时,请务必检查扩展的兼容性。

使用 Azure CLI 进行认证

认证是您使用 Azure CLI 的安全基石,近期的政策变化从根本上重塑了组织对凭据管理的方式。现代认证策略必须在安全需求与运营效率之间取得平衡,尤其是在微软对所有 Azure 服务实施更强认证标准之际。

认证方式

Azure Cloud Shell 自动登录

Cloud Shell 会基于您当前的 Azure 门户会话自动完成认证。这种无缝集成消除了交互式场景中的认证复杂度,非常适合学习与临时管理任务。

交互式登录

标准认证方式使用设备代码流程:

az login

该命令会在默认浏览器中执行 Microsoft Entra ID 认证,并自动处理 MFA。

无头环境:

az login --use-device-code

该命令会显示一个设备代码,可在任意联网设备上访问 https://microsoft.com/devicelogin 进行认证。

托管身份认证

Azure 资源可使用托管身份进行认证:

az login --identity

该方式免除了在 Azure 内运行的应用的凭据管理负担。

服务主体认证

基于遗留凭据的方式(若无工作负载身份联合则不再合规):

这种基于密码的认证方式是 2025 年 9 月 MFA 强制执行所影响的主要对象。使用该方式的脚本很可能失败,必须进行更新。

az login --service-principal --username <app-id> --password <password> --tenant <tenant-id>

此命令使用应用程序凭据进行认证,适用于自动化场景。

应对 2025 年 10 月的 MFA 强制执行

自 2025 年 10 月 1 日起,微软将强制启用多重身份验证(MFA)。如果您使用基于密码的服务主体,届时自动化脚本将失败。这是近年对 Azure CLI 自动化影响最大的变更。

此次安全更新从根本上改变了组织对 Azure CLI 自动化的方式。它影响服务主体的认证模式,并要求许多自动化场景迁移至工作负载身份。

> 您的自动化面临风险。请立即优先迁移至工作负载身份联合,避免 10 月 1 日的服务中断。

Infographic showing a 4-step MFA action plan for fixing Azure CLI authentication failures after Microsoft’s October 2025 MFA enforcement: 1. Audit failures and identify gaps, 2. Implement workload identity, 3. Test and validate, 4. Remediate fallbacks.

用四步行动计划修复失败的自动化并符合新的 MFA 要求。

管理订阅

生产环境通常需要明确的订阅管理:

az account list --output table
az account set --subscription "Your Subscription Name"

这些命令会列出可用订阅,并设置后续命令的默认订阅。

访问令牌

高级场景需要直接操作访问令牌:

az account get-access-token

该命令返回包含过期信息的访问令牌,便于程序化使用。

开始使用 Azure CLI 命令

掌握命令,首先要理解 CLI 的组织理念与发现机制。与其死记硬背数百条命令,不如通过 CLI 的智能帮助系统高效导航 Azure 庞大的服务生态。

查找命令

Azure CLI 的可发现性功能大幅降低学习曲线:

az find "virtual machine"

AI 驱动的搜索可定位相关命令并提供使用示例。

获取特定命令详情:

az vm create --help

该帮助命令展示参数、子组与实用示例,便于即时参考。

A terminal screenshot showing the helpful output of the 'az find' command, which provides relevant command suggestions and examples for creating a VM.

使用 "az find" 获取 AI 建议,快速发现您所需的精确命令。

命令结构

Azure CLI 遵循一致的分层结构:az <group> <subgroup> <command> [parameters]

创建虚拟机示例:

az vm create --resource-group myResourceGroup --name myVM --image UbuntuLTS --admin-username azureuser --generate-ssh-keys

该命令会按指定配置创建一台虚拟机。

全局参数

有若干参数可在所有命令中通用:

- --output 或 -o:控制输出格式(json、table、yaml、jsonc、tsv)

- --query:使用 JMESPath 语法过滤结果

- --verbose:提供详细执行信息

- --debug:显示完整的 HTTP 请求/响应细节

> --output table 适合可读性强的结果,--output json 适合脚本处理

交互模式与效率特性

交互模式通过智能辅助与上下文引导,重塑命令行体验。这种方式弥合了学习新命令和自信执行之间的鸿沟,提供实时校验与建议,加速 CLI 精通过程中的探索与执行两个阶段。

Azure CLI 交互模式

交互模式提供增强的命令行体验:

az interactive

该命令启动交互模式,支持命令补全、参数提示与上下文帮助。

An animated GIF demonstrating the Azure CLI's interactive mode, showing real-time command auto-completion and parameter suggestions.

Azure CLI 的交互模式提供智能建议,让复杂命令变成引导式体验。

Tab 补全

通过 Shell 集成提升生产力:

Bash:

echo 'source /etc/bash_completion.d/azure-cli' >> ~/.bashrc

该命令在 Bash 中启用 Azure CLI 命令的 Tab 补全。

PowerShell:

Register-ArgumentCompleter -Native -CommandName az -ScriptBlock { ... }

该 PowerShell 配置用于启用 Azure CLI 命令的 Tab 补全。

VS Code 集成

适用于 Visual Studio Code 的 Azure CLI 扩展提供语法高亮、IntelliSense 与集成终端支持。

使用 Azure CLI 管理资源

现在您已安装并完成配置,是时候真正上手了。本节我们从理论走向实践,开始管理实际的 Azure 资源。我们将超越单个命令,关注您每天都会用到的模式,用以构建、连接与管理云基础设施。

资源组操作

资源组是 Azure 资源的逻辑容器:

az group create --name myResourceGroup --location eastus
az group list --output table
az group delete --name myResourceGroup --yes --no-wait

这些命令以异步方式创建、列出与删除资源组。

常见资源创建

创建虚拟机:

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image UbuntuLTS \
  --size Standard_B2s \
  --admin-username azureuser \
  --generate-ssh-keys

该命令创建一台使用 SSH 密钥认证的 Linux 虚拟机。

创建存储账户:

az storage account create \
  --name mystorageaccount \
  --resource-group myResourceGroup \
  --location eastus \
  --sku Standard_LRS \
  --kind StorageV2

该命令创建通用 v2 存储账户,使用本地冗余存储。

查询与输出格式化

JMESPath 查询可用于过滤与转换命令输出:

az vm list --query "[].{Name:name, PowerState:powerState}" --output table
az vm list --query "[?location=='eastus'].name" --output tsv

这些 JMESPath 查询用于提取特定字段,并基于条件过滤结果。

> 精通 JMESPath 查询,便能从复杂的 JSON 响应中精准提取所需数据。

用 Azure CLI 实现自动化

自动化将单条命令转化为可复用、可靠且能超越手工操作规模的工作流。当您不再把 CLI 命令视为一次性任务,而是将其构建为从资源部署到灾难恢复的一套系统时,真正的魔力就出现了。

我记得第一次把每周的开发环境刷新实现自动化时,以往三个小时的手动点击与等待,变成了一段 15 分钟的脚本,我还能边跑脚本边去拿咖啡。这个自动化脚本每月为团队节省了数十小时,并消除了手工流程中不可避免的人为错误。

> 从小处着手自动化——先把日常最重复的任务自动化,再逐步扩展到完整的基础设施工作流

脚本最佳实践

具备错误处理与日志记录的健壮脚本模板:

#!/bin/bash
set -euo pipefail  # Exit on errors, undefined variables, pipe failures

RESOURCE_GROUP="automation-rg"
LOCATION="eastus"
VM_NAME="automated-vm"

log() {
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
}

cleanup() {
    log "Cleaning up resources due to script failure"
    az group delete --name "$RESOURCE_GROUP" --yes --no-wait 2>/dev/null || true
}

trap cleanup ERR

log "Starting Azure resource provisioning"

if ! az group show --name "$RESOURCE_GROUP" &>/dev/null; then
    log "Creating resource group: $RESOURCE_GROUP"
    az group create --name "$RESOURCE_GROUP" --location "$LOCATION"
fi

VM_RESULT=$(az vm create \
    --resource-group "$RESOURCE_GROUP" \
    --name "$VM_NAME" \
    --image UbuntuLTS \
    --generate-ssh-keys \
    --output json)

PUBLIC_IP=$(echo "$VM_RESULT" | jq -r '.publicIpAddress')
log "VM created successfully. Public IP: $PUBLIC_IP"

此脚本模板实现了全面的错误处理、日志与清理机制。

自动化的安全性

切勿在脚本中硬编码凭据。尽可能使用基于证书的认证:

# Certificate-based authentication (recommended)
export ARM_CLIENT_ID="your-client-id"
export ARM_CERTIFICATE_PATH="/path/to/certificate.pem"
export ARM_TENANT_ID="your-tenant-id"

az login --service-principal -u "$ARM_CLIENT_ID" --certificate-path "$ARM_CERTIFICATE_PATH" --tenant "$ARM_TENANT_ID"

# Secret-based authentication (use only when certificates aren't feasible)
export ARM_CLIENT_ID="your-client-id"
export ARM_CLIENT_SECRET="your-client-secret"
export ARM_TENANT_ID="your-tenant-id"

az login --service-principal -u "$ARM_CLIENT_ID" -p "$ARM_CLIENT_SECRET" --tenant "$ARM_TENANT_ID"

> 将敏感值存入 Azure Key Vault 并以程序方式读取。优先使用证书而非密钥以增强安全性。

CI/CD 流水线集成

Azure DevOps YAML 流水线示例:

steps:
- task: AzureCLI@2
  displayName: 'Deploy Infrastructure'
  inputs:
    azureSubscription: 'Your-Service-Connection'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      set -euo pipefail
      echo "Creating resource group"
      az group create --name $(resourceGroup) --location $(location)

该流水线配置将 Azure CLI 命令集成至自动化部署流程。

A screenshot of an Azure DevOps pipeline log showing the Azure CLI task successfully completing with a green checkmark, demonstrating CI/CD integration.

Azure DevOps 中成功运行的流水线,通过执行 Azure CLI 命令自动化基础设施部署。

Azure CLI 常见问题与排障

即便是经验丰富的从业者,也会遭遇认证失败、版本不匹配与配置冲突,这些都可能拖慢效率。了解常见故障模式与解决策略,可将拦路虎变成小障碍,快速而自信地化解。

认证失败

问题:我的使用 az login --service-principal 的自动化脚本在 2025 年 9 月突然报认证错误而停止工作。

解决方案:这是强制启用 MFA 的直接结果。基于密码的服务主体现被视为遗留且安全性较低的认证方式。您必须将自动化迁移到合规模式。请参考上文应对 2025 年 9 月 MFA 强制执行一节中的四步行动计划,重点实施工作负载身份联合或基于证书的认证。

问题:"Please run 'az login' to setup account" 错误在已成功登录后仍然存在。

解决方案:清除认证缓存并重新认证:

一次调试经历让我认识到在认证疑难杂症面前,Azure CLI 的 --debug 标志有多重要。看似随机的登录失败,实则是企业代理干扰令牌交换。调试输出揭示了被拦截的确切 HTTP 端点,从而迅速定位并解决,省去了数小时的猜测。

az account clear
az login --debug
az account list --output table

这些命令会清除缓存的凭据,并提供详尽的认证调试,揭示网络、证书或策略问题。

命令未找到问题

问题:安装后提示 "az: command not found"。

解决方案:这个经典错误偶尔也会让老手中招。我曾在一台新的 Linux 虚拟机上为此折腾了一个小时,结果只是忘了在安装后执行 source ~/.bashrc。简单却常犯的错误。

which az
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
source ~/.bashrc

这些命令用于定位 Azure CLI 的安装位置并更新 Shell 的 PATH 配置。

版本兼容性

问题:脚本报错 "argument not recognized"。

解决方案:检查 CLI 版本兼容性并按我们版本检查部分所述进行更新:

az version

该命令显示当前版本。各平台的更新命令请参见安装部分。

请记得保持 Azure CLI 更新,以获取新功能与安全补丁。

高级效率技巧

精通不仅在于执行基础命令,更包括复杂查询技巧、配置优化与性能提升——这些能力是管理大规模 Azure 环境的必备要素,效率与精准度将直接影响运营成效。

JMESPath 查询精通

高级查询可改变数据提取能力:

az vm list --query "[?tags.Environment=='production' && tags.Team=='backend'].{Name:name, Location:location, Size:hardwareProfile.vmSize}"

该高级查询按多个标签条件过滤虚拟机,并提取特定属性。

A side-by-side comparison showing the output of an Azure CLI command before and after using a JMESPath query. The 'before' is messy JSON, and the 'after' is a clean, readable table.

用一条 JMESPath 查询,将凌乱的 JSON 输出转化为清晰、可用的数据。

配置管理

通过持久化设置自定义 CLI 行为,减少重复操作的时间:

az configure --defaults output=table location=eastus group=myDefaultRG
az configure --list-defaults

这些命令设置常用参数的默认值并展示当前配置。设置存储于 ~/.azure/config,仅适用于您的用户配置文件,既可个性化 Azure CLI 体验,又不影响同机其他用户。

性能优化

面向大规模操作的增强:

az vm list --query "[].name" --output tsv | xargs -I {} -P 10 az vm show --name {} --resource-group myRG
az vm start --name myVM --resource-group myRG --no-wait

这些命令并行执行操作,并使用异步处理以提升性能。

结语

掌握 Azure CLI 能精简云管理,让您高效控制资源并自信地自动化工作流。先从交互模式或 Azure Cloud Shell 入手,再逐步用脚本实现可复用的部署。

想进一步提升技能,请查看 Understanding Microsoft Azure 或Microsoft Azure Fundamentals(AZ-900)学习路径

祝您自动化顺利,打造更聪明、更高效的 Azure 工作流!

Install Azure CLI FAQs

如何在企业网络中解决安装 Azure CLI 时的 SSL 证书错误?

企业防火墙常会拦截 SSL 连接。请将包管理器配置为使用企业证书,或通过下载离线安装包进行安装。

在 Windows 上不具备管理员权限也能安装 Azure CLI 吗?

可以,使用 ZIP 分发包解压到用户目录,并将解压路径添加到用户的 PATH 环境变量。

如果安装 Azure CLI 破坏了我现有的 Python 环境,该怎么办?

Azure CLI 自带其 Python 运行时。若出现冲突,请卸载并在 Windows 上使用 MSI 重新安装;其他平台请使用能妥善处理依赖的包管理器。

Azure CLI 脚本在 Windows PowerShell 与 Linux bash 上是否完全一致?

Azure CLI 命令本身一致,但不同 Shell 的变量语法、路径分隔符与换行续行符存在差异。为最大可移植性,建议使用跨平台脚本语言如 Python。

在 Windows 与类 Unix 系统间共享脚本时,如何处理路径差异?

在 Azure CLI 参数中使用正斜杠(Azure 通用支持),并将与系统相关的路径存入环境变量或配置文件。

Khalid Abdelaty

作者

Khalid Abdelaty

我是一名数据工程师兼社区建设者,专注于数据管道、云端与 AI 工具链,同时为 DataCamp 和新兴开发者撰写实用且高影响力的教程。

主题