Powershell azure 模块

标签 powershell azure

这可能是一个新手问题,因为我就是这样,但我希望它不会打扰任何人,因为我无法找到正确的解释。

我正在尝试了解 azure,并且一直在考虑使用 powershell 管理我的订阅。事实是,我发现了两个模块(在我看来)Azure 和 AzureRM 具有相同的功能。

有谁知道其中的区别吗?

谢谢

最佳答案

Azure PowerShell Cmdlet 最近经历了很多变化,所以是的,它可能有点令人困惑。公平地说,他们确实做了很多相同的事情。

正如您所见,如果从 Web 平台安装程序或 PowerShell 库安装 Azure PowerShell 1.0.1,您会发现它们分为“服务管理”和“Azure 资源管理器”模块。如果您执行“Get-module -ListAvailable”,您将看到分割。请注意,ServiceManagement 文件夹下有一个 Azure 模块,然后 AzureResourceManager 文件夹下有很多模块,这些模块的后缀为“RM”,表示资源管理器。

@theadriangreen 在他的答案中指出的是正确的,Azure 资源管理器在尝试一次性部署一堆相关资源时拥有强大的功能。使用 Azure 资源管理器 (ARM) 模板,您可以一次性部署整个环境,甚至可以销毁它。真的,真的很强大。然而,他的错误之处在于,ARM cmdlet 也可用于在特定服务上使用 azure 中的资源。 Get-AzureRMVM cmdlet 将检索 VM 列表或特定 VM,就像 Azure 服务管理模块中的 Get-AzureVM 所做的那样。 ARM 不仅仅涉及大颗粒操作。

据我了解,这两者之间的真正区别在于 Azure 模块(服务管理)使用较旧的“服务管理平面”(Microsoft 术语)。它是用于管理 Azure 资源的较旧 API。 ARM 使用更新的管理 API,是管理 Azure 资源的新方法。当前的脱节以及为什么需要两者的原因是,当前并非所有 Azure 资源都在 ARM 中可用,并且并非所有较新的服务都在旧服务管理平面上可用。这就是为什么您还会看到两个 Azure 门户,其中某些服务仅在其中一个门户中可用。随着每个团队在转换方面取得进展,他们正在编写“资源提供程序”,用于将他们的服务映射到 ARM 系统。这并不是一件小事,他们正在努力做到这一点,同时改进他们的服务。

请注意,AzureRM* cmdlet 仅拉回使用 ARM 创建的资源,而不是旧的“经典”资源。反之亦然,Azure 服务管理 cmdlet 将仅向您显示使用它创建的内容(或通过旧门户或在“经典”模式下的新门户上)。这是一个令人悲伤的事实,因为事情仍在向 ARM 过渡。

此外,现在使用 1.0 版 cmdlet,Switch-AzureMode cmdlet 已被弃用,您不再需要使用它。它们使得同时使用较旧的 Azure 服务管理 cmdlet 和较新的 ARM cmdlet 成为可能。他们还花费了大量时间将 ARM cmdlet 分解为更独立的模块,以便它们可以独立部署,而您只需获取使用模块所需的内容即可。

我的建议是,只有在可能的情况下才继续使用 ARM 模块,除非您使用的服务仅存在于旧版 Azure 服务管理 cmdlet 中,或者您在 Azure 中拥有在旧版管理平面上创建的资源,并且因此不会出现在任何 ARM cmdlet 中。迟早,旧的管理平面会越来越没有用,我大胆猜测他们最终会淘汰它(尽管这是我的猜测,而且我没有直接从微软那里听到任何消息,我希望对旧管理平面的支持将长期存在)。

关于Powershell azure 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33902809/

相关文章:

sql - Azure 数据工厂查询 Mongo DB 以筛选日期

azure - 如何使用 ARM 模板在 azure 中配置现有 Web 应用程序和虚拟网络

powershell - splatting 时使用哈希表作为参数?

powershell - 通过Powershell调用NET USE命令时如何获取退出代码?

powershell - 使用 Powershell 比较两个文本文件并删除重复的行

PowerShell - 使用 -Recurse 和 -Filter 附加到目录中的所有文件

c# - 将 Entity Framework 6 与 Azure SQL 结合使用时,异步 LINQ 查询为空?

用于失败处理和重试的 PowerShell 重试循环

azure - 为什么功能应用程序突然停止工作?

java - 如何使用 MSI 从 Java 向 Azure 存储进行身份验证?