Azure CLI与Powershell?

时间:2017-08-09 08:06:37

标签: powershell azure azure-cli azure-cli2

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

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

我认为Powershell core将成为非Windows管理员的方式。 Powershell Core不会在所有平台上移植得很好,为跨平台的受众提供服务吗?

  

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

10 个答案:

答案 0 :(得分:17)

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。

答案 1 :(得分:17)

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

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

Azure CLI有一些优点:

  1. 开源 - 它有很多优点。它可能在未来发展得更快。您可以查看代码中的真实内容,社区可能会或将会更大,等等。
  2. Azure CLI可与Groovy,Python,Ruby或任何其他脚本语言一起使用。与经验丰富的PowerShell开发人员相比,获得这些语言的优秀开发人员更容易。例如:我因为Java而使用了Groovy。使用此组合然后学习PowerShell脚本更容易....
  3. 目前,PowerShell 1非常重要:Azure有一个庞大的PowerShell脚本示例存储库。但是:通常你必须自己做以满足你的要求 - 因此一个例子可能是一个很好的起点 - 有时从头开始更容易。

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

答案 2 :(得分:5)

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

MacOS或Linux上的Powershell安装说明可用here

答案 3 :(得分:4)

只想增加我在Azure Cli和Az PowerShell中的经验。

自2019年以来,两者都是跨平台的,因此它应该仅是语言/语法首选项,但是对于Azure Cli,所有/大多数命令都是幂等

我最终用Azure Cli脚本替换了我所有的ARM模板,因为它不那么冗长且易于阅读。

使用Az Powershell,您仍然需要在创建资源之前检查资源是否存在,否则它将引发异常,因此脚本会毫无原因地变得非常复杂。

我们同时使用Azure Cli和Az Powershell和Azure DevOps。 Azure Cli命令只能从bash(Linux)或bat(Windows)脚本执行。所以它不是最佳的...

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

答案 4 :(得分:3)

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

答案 5 :(得分:3)

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

  • PowerShell is a language of Azure Functions。因此,您可以轻松编写模块或代码并将其推送到安全的Azure函数。 CLI不是受支持的语言。
  • Azure Automation Runbooks也一样,但CLI不支持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却可以执行其他操作。在我从事企业SharePoint,Dynamics,现在是Office和Azure的十多年中,我的PowerShell技能一直与之息息相关。

答案 6 :(得分:1)

您不必在 Linux 上使用 Azure CLI,您也可以在 Windows 上使用它,而且效果很好 =D

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

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

答案 7 :(得分:0)

php artisan migrate:refresh --path=database/migrations/2020_09_02_000000_create_users_table.php

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

答案 8 :(得分:0)

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

答案 9 :(得分:0)

有一个来自 MS 的 article 关于这个主题,有以下内容:

<块引用>

Azure CLI 和 Azure PowerShell 之间并不总是存在 Azure 服务的功能奇偶校验。

<块引用>

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

<块引用>

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

<块引用>

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