Azure CLI vs Powershell?
无法准确理解Windows环境中Azure CLI的优点 它是否针对希望从Linux环境管理Azure IAAS的用户 我认为这将是非Windows管理员的方式。 PowerShell Core是否不会在所有平台上都进行良好的移植,以服务于跨平台观众 简而言之,值得学习Azure CLI吗Azure CLI vs Powershell?,powershell,azure,azure-cli,azure-cli2,Powershell,Azure,Azure Cli,Azure Cli2,无法准确理解Windows环境中Azure CLI的优点 它是否针对希望从Linux环境管理Azure IAAS的用户 我认为这将是非Windows管理员的方式。 PowerShell Core是否不会在所有平台上都进行良好的移植,以服务于跨平台观众 简而言之,值得学习Azure CLI吗 Azure CLI是一个类似于PowerShell的工具,可用于所有平台。无论您使用什么平台:Windows、Linux或Mac,都可以使用相同的命令 现在,有两个版本的Azure CLI。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 正如我们的一位微软联系人所说:使用你喜欢和喜欢的任何东西 Azure CLI有一些优点:
我的建议是:使用Azure CLI-->进行脚本编写,使用贵公司熟悉的语言。在2018年之前,Powershell在非Windows平台上不可用。从2018年1月开始,Powershell将在MacOS和Linux平台上提供
MacOS或Linux上的Powershell安装说明可用Powershell也是开源的。 微软刚刚发布了PowerShell Azure Az模块(2018年12月),该模块使用.Net内核。因此它可以在Linux、Mac OS和Windows上运行。
如果愿意,Azure CLI仍然适用于Linux开发人员。只是想添加我对Azure CLI和Az PowerShell的体验 根据2019年的情况,这两个命令都是跨平台的,因此它应该只是一种语言/语法首选项,但对于Azure Cli,所有/大多数命令都是幂等的 我最终用Azure Cli脚本替换了我所有的ARM模板,因为它不那么冗长,而且易于阅读 使用Az Powershell,您仍然需要在创建资源之前检查资源是否存在,否则它将引发异常,因此脚本可能会变得非常复杂 我们在Azure DevOps中同时使用Azure Cli和Az Powershell。Azure Cli命令现在可以从bash(Linux)或bat(Windows)脚本执行。所以它不是最佳的。。。(编辑2020您现在也可以使用Powershell脚本运行Azure CLI)
- 我们使用Azure Cli部署资源,因为它易于阅读,并且命令是幂等的
- 对于复杂的脚本,我更喜欢使用PowerShell,因为它有许多有用的语言功能
除了Az CLI(Powershell core)之外,它还处理我需要执行的大部分脚本编写。Powershell与CLI相比有一些显著的优势:
- 。因此,您可以轻松编写模块或代码,并将其推送到安全的Azure函数。CLI不是受支持的语言
- 同样适用于,但CLI不是受支持的语言
- 如果您希望协调覆盖本地和云的混合工作负载,即将服务部署到Windows服务器,然后在Azure中部署一个端点以供其交互,PowerShell可以,但CLI不能(如果它这样做了,我会感到惊讶)
- 如果您想投资一种可以调用旧模块进行管理的语言,PowerShell可以,但CLI不能
- 如果您想用C#或任何其他语言创建自己的DLL,并将其合并到脚本中。我不得不对DLL进行反向工程,并将它们包装在PowerShell中,以合并到编排中
- 使用PowerShell扩展DevOps管道的成功率明显高于CLI
- PowerShell对Azure单元和冒烟测试以及大型Azure并行部署等场景具有非常好的多线程工作负载支持(DevOps并行任务会变得笨重)。TBH,我不知道Azure CLI中的本机多线程
- 我可以开发一个模块,在上述所有场景中使用它,然后将其提供给终端客户;TBH,我不相信我能为CLI做到这一点(创建一个模块,对其进行数字签名,然后使用nuget feed发行版)