【问题标题】:Get Azure VM Detail by PowerShell通过 PowerShell 获取 Azure VM 详细信息
【发布时间】:2026-01-23 06:55:02
【问题描述】:

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

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

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

【问题讨论】:

  • 我想查看VM的当前状态。

标签: powershell azure powershell-3.0


【解决方案1】:

您应该先致电Select-AzureSubscription "subscription name"

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

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

Get-AzureSubscription | select SubscriptionName

【讨论】:

  • 这似乎是我的问题。我正在使用的帐户下有两个订阅。
【解决方案2】:

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

这让我把我的虚拟头发拉出来尝试进行自动化(这需要 7 个小时的手动捏造才能开始工作!)。

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

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

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

请记住,如果您尝试进行自动化,那么您需要新模式下的虚拟机可通过门户获得,您通过管理创建的旧虚拟机(经典)在此模式下不可见,您必须重新创建它们。

【讨论】:

  • 这在当时是正确的,但您不再需要使用 Switch-AzureMode,这些 cmdlet 已重命名,因此它们不会发生冲突。
【解决方案3】:

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

为了控制这两种不同类型的管理系统,您应该按照in the main page of the Azure Powershell Github project page 的描述在它们之间切换,但azure powershell versions lower than 1.0.0 是这样,您可以在here 中找到更多解释

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

总结:

  1. Powershell 版本低于 1.0.0 你应该在模式之间切换并使用Get-AzureVM, which is very confusing in my and lots of others opinion
  2. Powershell 版本等于或大于 1.0.0,您应该将 Get-AzureVM 用于 ASM,Get-AzureRmVm 用于 ARM。

【讨论】:

    【解决方案4】:

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

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

    Switch-AzureMode -Name AzureResourceManager

    【讨论】:

      【解决方案5】:

      如果您的脚本使用旧功能以及新的 Azure 资源管理器 cmdlet,则在 AzureServiceManagement 和 AzureResourceManger 之间切换 Azure Powershell 模式是一种可能的解决方案。只有 Microsoft Azure Powershell 0.9.8 或更早版本才需要该开关。

      【讨论】:

        最近更新 更多