在管理 Azure 方面,有许多选项。 本文比较 Azure CLI 和 Azure PowerShell 语言,并比较运行它们的 shell 环境。
Azure CLI、 Azure PowerShell 和 Azure 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(Unix命令解释器) | 是的 | |
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 是大多数 Windows 操作系统中预安装的标准脚本 shell。 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 环境:Bash(预安装 Azure CLI)和 PowerShell(预安装 Azure PowerShell)。 Cloud Shell 窗口顶部的下拉列表可用于在两个环境之间轻松切换。
Cloud Shell 可在 Web 浏览器中访问,并且具有 适用于 Windows 终端 和 Visual Studio Code 的集成。
注释
Azure Cloud Shell 可能不会始终 立即反映 最新的 Azure PowerShell 和 Azure CLI 版本,因为所有三种工具的发布计划都不同。 但是,通常认为 Azure Cloud Shell 始终包含这两种工具的最新版本。
哪种 Azure 命令行工具适合你?
选择正确的工具时,请考虑过去的经验和当前工作环境。
Azure CLI 语法类似于 Bash 脚本的语法。 如果主要使用 Linux 系统,Azure CLI 感觉更自然。
Azure PowerShell 是一个 PowerShell 模块。 如果主要使用 Windows 系统,则 Azure PowerShell 很适合。 命令遵循谓词名词命名方案,并将数据作为对象返回。
选择可利用你的经验并缩短学习曲线的工具。 善用 Microsoft 学习 ,在命令行中熟练地管理 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 订阅ID> |
列出 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 <资源组名称> -Name myVM -Image UbuntuLTS -Credential (Get-Credential) |
创建 Azure 存储帐户 | az storage account create --name |
New-AzStorageAccount -Name <StorageAccountName> -ResourceGroupName <ResourceGroupName> -Location eastus -SkuName Standard_LRS -Kind StorageV2 |
管理 Azure 虚拟机:
指令 | Azure 命令行接口 (CLI) | Azure PowerShell |
---|---|---|
列出虚拟机 | az vm list | Get-AzVM |
重启 VM | az vm restart --name myVM --resource-group <ResourceGroupName> | Restart-AzVM -Name myVM -ResourceGroupName <资源组名称> |
停止虚拟机 | 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 默认输出 JSON 字符串。 可以在 Azure CLI 命令的输出格式中找到其他格式选项。
- Azure PowerShell 默认为输出对象。 若要详细了解 PowerShell 中的格式设置,请阅读 “使用格式命令更改输出视图”。
后续步骤
Azure CLI:
Azure PowerShell: