无法准确理解 Azure CLI 在 Windows 环境中的优点。
它是否针对想要从 Linux 环境管理 Azure IAAS 的受众?
我认为Powershell 核心将成为非 Windows 管理员的方式。PowerShell Core 是否不会被移植到所有平台上,以服务于跨平台的受众?
简而言之,是否值得学习 Azure CLI?
无法准确理解 Azure CLI 在 Windows 环境中的优点。
它是否针对想要从 Linux 环境管理 Azure IAAS 的受众?
我认为Powershell 核心将成为非 Windows 管理员的方式。PowerShell Core 是否不会被移植到所有平台上,以服务于跨平台的受众?
简而言之,是否值得学习 Azure CLI?
Azure CLI 是适用于所有平台的类似 PowerShell 的工具。无论您使用什么平台:Windows、Linux 或 Mac,您都可以使用相同的命令。
现在,有两个版本的 Azure CLI。Azure CLI 1.0 使用 Node.js 编写以实现跨平台功能,新的 Azure CLI 2.0 使用 Python 编写以提供更好的跨平台功能。两者都是开源的,可以在 Github 上找到。但是,目前,只有某些 PowerShell cmdlet 支持在 Linux 上使用。
它是否针对想要从 Linux 环境管理 Azure IAAS 的受众?
我认为答案是肯定的。对于 Linux 或 Mac 开发人员,我认为他们更有可能使用 Azure CLI。
Azure CLI 和 PowerShell 包都使用 Azure 的 REST API。
正如我们的一位 Microsoft 联系人所说:使用任何你喜欢和喜欢的东西。
Azure CLI 有一些优点:
目前 PowerShell 有1 个非常大的积极因素:Azure 有一个巨大的 PowerShell 脚本示例存储库。但是:通常你必须自己做以满足你的要求——因此一个例子可能是一个很好的起点——有时从头开始更容易。
我的建议是:使用 Azure CLI --> 对于脚本,使用贵公司熟悉的语言。
只是想增加我对 Azure Cli 和 Az PowerShell 的体验。
根据 2019 年,两者都是跨平台的,因此它应该只是一种语言/语法首选项,但对于 Azure Cli,所有/大多数命令都是idempotent。
我最终用 Azure Cli 脚本替换了我所有的 ARM 模板,因为它不那么冗长且易于阅读。
使用 Az Powershell,您仍然需要在创建资源之前检查资源是否存在,否则会引发异常,因此脚本可能会无缘无故变得非常复杂。
我们将 Azure Cli 和 Az Powershell 与 Azure DevOps 结合使用。现在可以从 bash (Linux) 或 bat (Windows) 脚本执行 Azure Cli 命令。所以它不是最佳的......(编辑 2020您现在也可以使用 Powershell 脚本运行 Azure CLI)
编辑 2021
使用新的Azure Bicep,我开始回到“ARM 类型”部署:如果您了解 ARM 模板并且即使在复杂的部署中也能保持可读性,Bicep 真的很容易使用。
除了 Az CLI(Powershell 核心)之外,它还处理我需要执行的大部分脚本。
与 CLI 相比,PowerShell 具有一些显着优势:
我几乎没有在 PowerShell 中编写过脚本,而使用 CLI 我可以做一些事情,但不能做其他事情。10 多年来,我的 PowerShell 技能一直保持相关性,我一直在做企业 SharePoint、Dynamics,现在是 Office 和 Azure……所以我有偏见。
PowerShell 也是开源的。微软刚刚发布了使用 .Net 核心的 PowerShell Azure Az 模块(2018 年 12 月)。所以它可以在 Linux、Mac OS 和 Windows 上运行。如果愿意,Azure CLI 仍可供 Linux 开发人员使用。
在 2018 年之前,Powershell 在非 Windows 平台上不可用。从 2018 年 1 月开始,Powershell 在 MacOS 和 Linux 平台上可用。
MacOS 或 Linux 上的 Powershell 安装说明可在此处获得
简而言之,是否值得学习 Azure CLI?
在进行 MS Azure 培训(AZ-900 基础知识和 AZ-303 Azure Architect)时,我注意到练习是在Azure CLI中完成的。诚然,它们都是“复制并粘贴此代码”,但似乎 MS 更喜欢 CLI 而不是 PowerShell,至少出于培训目的。
更新:我最近在代理背后的 Azure CLI 遇到了很多麻烦。PowerShell 没有任何问题。作为习惯 PowerShell 的人,CLI 有点笨拙和愚蠢。也就是说,Terraform 需要 Azure CLI,因此这可能是考虑它的充分理由。
没必要在 Linux 上使用 Azure CLI,你也可以在 Windows 上使用它,它运行良好 =D
在我个人看来,这取决于你想做什么。我更喜欢使用 Azure CLI 命令而不是 Azure CMDLETS。但我仍然使用 PowerShell 作为我的脚本编程语言。
CLI 上的某些模块比 AZ 或 AzRM cmdlet 更“直接”。
由于这是社区中的一个常见问题,因此最近在文档中添加了一篇文章,涵盖了各种 Azure 命令行选项之间的相似之处、差异和细微差别:选择正确的 Azure 命令行工具。该文档也应该回答您的大部分问题。
在管理 Azure 时,您有很多选择。尽管Azure CLI、Azure PowerShell和Azure Cloud Shell具有重叠的功能,但它们各自的操作方式不同,并且语言有时会与环境混淆。
Azure CLI 与 Azure PowerShell: Azure CLI 和 Azure PowerShell 是命令行工具,可让你创建和管理 Azure 资源。虽然两者都是跨平台的并且可以安装在 Windows、macOS 和 Linux 上,但Azure CLI在 Windows PowerShell、Cmd 或 Bash 和其他 Unix shell 中运行,而Azure PowerShell需要 Windows PowerShell 或 PowerShell。
不同的 Shell 环境: Windows PowerShell、PowerShell、Cmd 和 Bash 是 Shell 环境。您的 shell 环境不仅决定了您可以使用哪些工具,而且还改变了您的命令行体验。
Shell Environment | Azure CLI | Azure PowerShell |
------------------|-----------|------------------|
Cmd | Yes | |
Bash | Yes | |
Windows PowerShell| Yes | Yes |
PowerShell | Yes | Yes |
使用 Azure 命令行工具并不总是必要的,但它是一项有用的技能。以下是选择命令行工具时要记住的几个关键因素:
Azure CLI 和 Azure PowerShell 之间并不总是存在 Azure 服务的功能对等性。
在选择正确的工具时,请考虑您过去的经验和当前的工作环境。
如果您主要使用 Windows 系统,Azure PowerShell 是天作之合。命令遵循动词-名词命名方案,数据作为对象返回。如果您主要使用 Linux 系统,Azure CLI 感觉更自然。
选择使用您的经验并缩短您的学习曲线的工具。
两者都是可取的,因为我们可以使用它们中的任何一个来编写脚本。对于 Powershell 或 Azure CLI,您需要下载软件才能编写脚本,但 Powershell 更受青睐,因为它是 Microsoft 的内置工具。但我也注意到,如果我们将它与命令提示符进行比较,通过 Powershell 发出命令会更加复杂。