75

无法准确理解 Azure CLI 在 Windows 环境中的优点。

它是否针对想要从 Linux 环境管理 Azure IAAS 的受众?

我认为Powershell 核心将成为非 Windows 管理员的方式。PowerShell Core 是否不会被移植到所有平台上,以服务于跨平台的受众?

简而言之,是否值得学习 Azure CLI?

4

11 回答 11

50

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。

于 2017-08-09T08:52:38.527 回答
38

Azure CLI 和 PowerShell 包都使用 Azure 的 REST API。

正如我们的一位 Microsoft 联系人所说:使用任何你喜欢和喜欢的东西。

Azure CLI 有一些优点:

  1. 开源——它有很多优点。未来可能会发展得更快。您可以查看代码中的真正内容,社区可能或将会更大,等等。
  2. Azure CLI 可与 Groovy、Python、Ruby 或任何其他脚本语言一起使用。与经验丰富的 PowerShell 开发人员相比,为这种语言找到优秀的开发人员更容易。例如:因为 Java,我使用了 Groovy。使用这种组合比学习 PowerShell 脚本更容易......

目前 PowerShell 有1 个非常大的积极因素:Azure 有一个巨大的 PowerShell 脚本示例存储库。但是:通常你必须自己做以满足你的要求——因此一个例子可能是一个很好的起点——有时从头开始更容易。

我的建议是:使用 Azure CLI --> 对于脚本,使用贵公司熟悉的语言。

于 2017-12-02T07:36:28.550 回答
28

只是想增加我对 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)

  • 我们使用 Azure Cli 部署资源,因为它易于阅读且命令是幂等的。
  • 对于复杂的脚本,我更喜欢使用 PowerShell,因为它有很多有用的语言特性。

编辑 2021

使用新的Azure Bicep,我开始回到“ARM 类型”部署:如果您了解 ARM 模板并且即使在复杂的部署中也能保持可读性,Bicep 真的很容易使用。

除了 Az CLI(Powershell 核心)之外,它还处理我需要执行的大部分脚本。

于 2019-03-10T03:30:43.400 回答
11

与 CLI 相比,PowerShell 具有一些显着优势:

  • PowerShell 是 Azure Functions 的一种语言。因此,您可以轻松编写模块或代码并将其推送到安全的 Azure 函数。CLI 不是受支持的语言。
  • Azure Automation Runbooks 也是如此,而 CLI 不是受支持的语言。
  • 如果您想编排覆盖本地和云的混合工作负载,即将服务部署到 Windows Server,然后在 Azure 中部署一个端点以与之交互,PowerShell 可以但 CLI 不能(如果确实如此,我会感到惊讶)。
  • 如果您想投资一种可以调用旧模块进行管理的语言,PowerShell 可以,但 CLI 不能。
  • 如果您想用 C# 或任何其他语言创建自己的 DLL 并将其合并到您的脚本中。我不得不对 DLL 进行逆向工程并将它们包装在 PowerShell 中以合并到编排中。
  • 与 CLI 相比,我在使用 PowerShell 扩展 DevOps 管道方面取得了更大的成功。
  • PowerShell 对 Azure 单元和冒烟测试以及大型 Azure 并行部署(除了变得笨重的 DevOps 并行任务)等场景具有非常好的多线程工作负载支持。TBH,我不知道 Azure CLI 中的本机多线程。
  • 我可以开发一个模块,在上述所有场景中使用它,然后将其提供给最终客户端;TBH,我不相信我可以为 CLI 做到这一点(创建一个模块,对其进行数字签名,然后 nuget feed 发行版)。

我几乎没有在 PowerShell 中编写过脚本,而使用 CLI 我可以做一些事情,但不能做其他事情。10 多年来,我的 PowerShell 技能一直保持相关性,我一直在做企业 SharePoint、Dynamics,现在是 Office 和 Azure……所以我有偏见。

于 2020-10-28T02:42:43.390 回答
6

PowerShell 也是开源的。微软刚刚发布了使用 .Net 核心的 PowerShell Azure Az 模块(2018 年 12 月)。所以它可以在 Linux、Mac OS 和 Windows 上运行。如果愿意,Azure CLI 仍可供 Linux 开发人员使用。

于 2019-01-26T20:31:47.967 回答
5

在 2018 年之前,Powershell 在非 Windows 平台上不可用。从 2018 年 1 月开始,Powershell 在 MacOS 和 Linux 平台上可用。

MacOS 或 Linux 上的 Powershell 安装说明可在此处获得

于 2018-04-04T02:47:30.283 回答
2

简而言之,是否值得学习 Azure CLI?

在进行 MS Azure 培训(AZ-900 基础知识和 AZ-303 Azure Architect)时,我注意到练习是在Azure CLI中完成的。诚然,它们都是“复制并粘贴此代码”,但似乎 MS 更喜欢 CLI 而不是 PowerShell,至少出于培训目的。

更新:我最近在代理背后的 Azure CLI 遇到了很多麻烦。PowerShell 没有任何问题。作为习惯 PowerShell 的人,CLI 有点笨拙和愚蠢。也就是说,Terraform 需要 Azure CLI,因此这可能是考虑它的充分理由。

于 2020-11-17T11:29:53.363 回答
1

没必要在 Linux 上使用 Azure CLI,你也可以在 Windows 上使用它,它运行良好 =D

在我个人看来,这取决于你想做什么。我更喜欢使用 Azure CLI 命令而不是 Azure CMDLETS。但我仍然使用 PowerShell 作为我的脚本编程语言。

CLI 上的某些模块比 AZ 或 AzRM cmdlet 更“直接”。

于 2021-05-06T13:10:03.747 回答
0

由于这是社区中的一个常见问题,因此最近在文档中添加了一篇文章,涵盖了各种 Azure 命令行选项之间的相似之处、差异和细微差别:选择正确的 Azure 命令行工具。该文档也应该回答您的大部分问题。

在管理 Azure 时,您有很多选择。尽管Azure CLIAzure PowerShellAzure 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 语法类似于 Bash 脚本。如果您主要使用 Linux 系统,Azure CLI 感觉更自然。
  • Azure PowerShell 是一个 PowerShell 模块。如果您主要使用 Windows 系统,Azure PowerShell 是天作之合。命令遵循动词-名词命名方案,数据作为对象返回。
  • 请记住,Azure CLI 和 Azure PowerShell 之间并不总是存在 Azure 服务的功能对等性。
  • 选择使用您的经验并缩短您的学习曲线的工具。在有意义的情况下使用不同的工具。
于 2021-12-16T07:42:49.107 回答
0

MS有一篇关于该主题的文章,其中包含以下内容:

Azure CLI 和 Azure PowerShell 之间并不总是存在 Azure 服务的功能对等性。

在选择正确的工具时,请考虑您过去的经验和当前的工作环境。

如果您主要使用 Windows 系统,Azure PowerShell 是天作之合。命令遵循动词-名词命名方案,数据作为对象返回。如果您主要使用 Linux 系统,Azure CLI 感觉更自然。

选择使用您的经验并缩短您的学习曲线的工具。

于 2021-07-04T15:40:02.583 回答
0

两者都是可取的,因为我们可以使用它们中的任何一个来编写脚本。对于 Powershell 或 Azure CLI,您需要下载软件才能编写脚本,但 Powershell 更受青睐,因为它是 Microsoft 的内置工具。但我也注意到,如果我们将它与命令提示符进行比较,通过 Powershell 发出命令会更加复杂。

于 2021-06-23T08:17:20.200 回答