你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

选择正确的 Azure 命令行工具

在管理 Azure 时,你有许多选项。 本文比较了 Azure CLI 和 Azure PowerShell 语言,还比较了运行这些语言的 shell 环境。

Azure CLIAzure PowerShellAzure Cloud Shell 具有重叠功能。 每个工具的操作方式不同,且语言有时会与环境相混淆。 使用本指南确定适合的工具。

使用 Azure 命令行工具有什么优点?

Azure 自动化地运行。 在门户中执行的每一个操作都会在某个位置转换为要执行的代码,以读取、创建、修改或删除资源。

将工作负载移至 Azure 会减轻一些管理负担,但不是全部。 随着 Azure 使用率的增加,开销也会随之增加。 即使你不必担心数据中心,但仍必须修补和排查 Azure VM、对数据库进行故障转移并配置虚拟网络。

通过使用运行 Azure 的现有自动化,命令行工具可减少该开销。

什么是 Azure 命令行工具?

Azure 命令行工具可自动执行例行操作、标准化数据库故障转移,以及拉取提供强大见解的数据。 命令行工具不仅让你能够在 Azure 中缩放任务,而且还使共享变得更加容易。 相比共享一个带有耗时屏幕截图的冗长 Wiki 页面,共享脚本要容易得多。

使用 Azure 命令行工具并不总是必要的,但这是一种有用的技能。

Azure CLI 与 Azure PowerShell

Azure CLI 和 Azure PowerShell 都是命令行工具,可用于创建和管理 Azure 资源。 两者都是跨平台的,可安装在 Windows、macOS 和 Linux 上。

Azure CLI

  • 跨平台命令行接口,可安装在 Windows、macOS、Linux 上
  • 在 Windows PowerShell、Cmd、Bash 和其他 Unix shell 中运行。

Azure PowerShell

  • 跨平台 PowerShell 模块,在 Windows、macOS 和 Linux 上运行
  • 需要 Windows PowerShell 或 PowerShell

不同的 shell 环境

Shell 环境 Azure CLI Azure PowerShell
Cmd
Bash
Windows PowerShell
PowerShell

Windows PowerShell、PowerShell、Cmd 和 Bash 都是 shell 环境。 Shell 环境不仅决定你可以使用哪些工具,还会更改你的命令行体验。

例如,对于行继续符,Bash 使用反斜杠 \ 而 Windows PowerShell 使用反引号 `。 Shell 环境中的差异不会更改 Azure CLI 和 Azure PowerShell 操作的方式。 但它们确实会更改你的命令行体验。

Azure CLI 具有在所有四个 shell 环境中使其命令可执行的安装程序。

Azure PowerShell 是打包成一个名为 Az 的 PowerShell 模块的 cmdlet 集,而不是可执行文件。 必须使用 Windows PowerShell 或 PowerShell 来安装该 Az 模块。

Windows PowerShell 是标准的脚本 shell,它预装在大多数 Windows 操作系统中。 PowerShell 是一种独立的安装,它在运行时使用 .NET Core,这让其可以在 macOS、Linux 和 Windows 上进行安装。

要点:

  • AzureRM 是一个 PowerShell 模块,它仍被应用来通过 PowerShell 进行 Azure 管理。 不过,它已被 Azure PowerShell 替代,并且正式停用日期为 2024 年 2 月 29 日。

如果你使用 AzureRM,则可以将 Azure PowerShell 从 AzureRM 迁移到 Az

Azure Cloud Shell 怎么样?

Azure Cloud Shell 是在 Ubuntu 容器上运行的托管 Shell 环境。

Cloud Shell 提供了两个 shell 环境:预安装 Azure CLI 的 Bash 和预安装 Azure PowerShell 的 PowerShell。 通过 Cloud Shell 窗口顶部的下拉列表,可在这两个环境之间轻松切换。

Cloud Shell 可以在 Web 浏览器中访问,并集成了 Windows 终端Visual Studio Code

Azure CloudShell Bash and PowerShell environments

注意

Azure Cloud Shell 可能不会始终立即反映最新的 Azure PowerShell 和 Azure CLI 版本,因为这三个工具的发布计划不同。 但是,通常认为 Azure Cloud Shell 始终包含这两种工具的最新版本。

哪种 Azure 命令行工具适合你?

在选择合适的工具时,请考虑你过去的经验和当前的工作环境。

Azure CLI 语法类似于 Bash 脚本的语法。 如果你主要使用 Linux 系统,Azure CLI 感觉更自然。

Azure PowerShell 是一个 PowerShell 模块。 如果你主要使用 Windows 系统工作,则 Azure PowerShell 更顺手。 命令遵循“动词-名词”的命名模式,数据作为对象返回。

选择可利用你的经验并缩短学习曲线的工具。 利用 Microsoft Learning,熟练地在命令行中管理 Azure。

也就是说,思想开放只会提高你的能力。 在适当的时候使用不同的工具。

要点:

  • Azure 服务的功能奇偶一致性并不总是存在于 Azure CLI 和 Azure PowerShell 之间。

Azure CLI 与 Azure PowerShell:并行命令比较

登录、订阅和位置命令:

命令 Azure CLI Azure PowerShell
使用 Web 浏览器登录 az login Connect-AzAccount
获取可用的订阅 az account list Get-AzSubscription
设置订阅 az account set –-subscription <SubscriptionId> Set-AzContext -Subscription <SubscriptionID>
列出 Azure 位置 az account list-locations Get-AzLocation

查找版本、获取帮助和查看命令帮助:

命令 Azure CLI Azure PowerShell
查找版本 az --version Get-InstalledModule -Name Az
获取帮助 az --help Get-Help
查看命令帮助 az vm --help Get-Help -Name New-AzVM

创建资源组、VM 和存储帐户:

命令 Azure CLI Azure PowerShell
创建资源组 az group create --name <ResourceGroupName> --location eastus New-AzResourceGroup -Name <ResourceGroupName> -Location eastus
创建 Azure 虚拟机 az vm create --resource-group myResourceGroup --name myVM --image UbuntuLTS --admin-username azureuser --admin-password '<Password>' New-AzVM -ResourceGroupName <ResourceGroupName> -Name myVM -Image UbuntuLTS -Credential (Get-Credential)
创建 Azure 存储帐户 az storage account create --name <StorageAccountName> --resource-group <ResourceGroupName> --location eastus --sku Standard_LRS --kind StorageV2 New-AzStorageAccount -Name <StorageAccountName> -ResourceGroupName <ResourceGroupName> -Location eastus -SkuName Standard_LRS -Kind StorageV2

管理 Azure 虚拟机:

命令 Azure CLI Azure PowerShell
列出 VM az vm list Get-AzVM
重新启动 VM az vm restart --name myVM --resource-group <ResourceGroupName> Restart-AzVM -Name myVM -ResourceGroupName <ResourceGroupName>
停止 VM az vm stop --name myVM --resource-group <ResourceGroupName> Stop-AzVM -Name myVM -ResourceGroupName <ResourceGroupName>
停止和解除分配 VM az vm deallocate --name myVM --resource-group <ResourceGroupName> Stop-AzVM -Name myVM -ResourceGroupName <ResourceGroupName>
启动虚拟机 az vm start --name myVM --resource-group <ResourceGroupName> Start-AzVM -Name myVM -ResourceGroupName <ResourceGroupName>
删除 VM az vm delete --name myVM --resource-group <ResourceGroupName> Remove-AzVM -Name myVM -ResourceGroupName <ResourceGroupName>

选择属性并更改输出格式:

命令 Azure CLI Azure PowerShell
显示所有订阅信息 az account list --all Get-AzSubscription | Select-Object -Property *
输出为表格 az account list -o table Get-AzSubscription | Format-Table
输出为 JSON az account show Get-AzSubscription | ConvertTo-Json

要点:

后续步骤

Azure CLI:

Azure PowerShell: