通过PowerShell获取Azure VM详细信息



我正在尝试运行Get-AzureVM PowerShell命令,它运行良好,但没有返回任何输出。

也尝试了以下口味,但还是空白结果,有什么想法吗?

Get-AzureVM -Name "vmname" |Select-Object name,instancesize,location

您应该先调用Select-AzureSubscription "subscription name"

它可能默认订阅中没有任何虚拟机。

要查看您当前的订阅名称,请致电:

Get-AzureSubscription | select SubscriptionName

实际上上面的答案只是半正确的。

这让我拔出了我的恶毒头发,试图实现自动化(这需要7个小时的手动伪造才能开始工作!)。

简单地说,Azure中有两种类型的虚拟机;Classic和资源管理器。

如果您使用Switch-AzureMode -name AzureServiceManagement然后使用Get-AzureVM,您将列出您创建的所有经典VM。

如果您使用Switch-AzureMode -name AzureResourceManager然后使用Get-AzureVM,您将列出您创建的所有资源管理器(或新)VM。

记住,如果你试图实现自动化,那么你需要通过门户网站获得新模式下的虚拟机,而你通过管理创建的旧虚拟机(经典)在这种模式下是不可见的,你必须重新创建它们。

Azure有两种类型的管理系统:AzureServiceManagement(ASM)和AzureResourceManager(ARM)

为了控制这两种不同类型的管理系统,你应该在它们之间切换,如Azure Powershell Github项目页面主页中所述,但对于低于1.0.0的Azure Powershell版本来说也是如此,你可以在这里找到更多解释

对于那些有兴趣使用高于1.0.0的powershell版本控制ARM(AzureResourceManager)的人,他们应该使用以下格式的所有Cmdlet:[Verb]-AzureRm[Noun],例如New-AzureVm变成New-AzureRmVm,在我们的情况下Get-AzureVM变成Get-AzureRmVm

总结:

  1. 低于1.0.0的Powershell版本,您应该在模式之间切换并使用Get-AzureVM,这在我和许多其他人看来非常令人困惑
  2. Powershell版本等于或大于1.0.0,您应该为ASM使用Get-AzureVM,为ARM使用Get-AzureRmVm

我知道这个问题已经被回答了,但我尝试了给出的答案,但它对我不起作用。我发现,我需要切换我的AzureMode。

为了解决这个问题,我运行了以下powershell脚本。

Switch-AzureMode -Name AzureResourceManager

如果脚本使用旧的功能以及新的Azure资源管理器cmdlet,则在AzureServiceManagement和AzureResourceManger之间切换Azure Powershell模式是一个可能的解决方案。此开关仅适用于Microsoft Azure Powershell 0.9.8或更低版本。

最新更新