Virtual machine 使用PowerShell获取Azure VM状态

Virtual machine 使用PowerShell获取Azure VM状态,virtual-machine,status,cmdlets,Virtual Machine,Status,Cmdlets,我正在使用Azure的PS命令尝试获取特定VM的当前状态。我以为这会是直截了当的,但我错了 我目前正在使用此cmd let: Get-AzureRmVM -Name CM01 -ResourceGroupName RG -Status ResourceGroupName : RG Name : CM01 Disks[0] : Name : CM01 Statuses[0]

我正在使用Azure的PS命令尝试获取特定VM的当前状态。我以为这会是直截了当的,但我错了

我目前正在使用此cmd let:

Get-AzureRmVM -Name CM01 -ResourceGroupName RG -Status


ResourceGroupName       : RG
Name                    : CM01
Disks[0]                :
  Name                  : CM01
  Statuses[0]           :
    Code                : ProvisioningState/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Time                : 18/08/2016 08:10:20
VMAgent                 :
  VmAgentVersion        : 2.7.1198.778
  ExtensionHandlers[0]  :
    Type                : Microsoft.Azure.RecoveryServices.VMSnapshot
    TypeHandlerVersion  : 1.0.10.0
    Status              :
      Code              : ProvisioningState/succeeded
      Level             : Info
      DisplayStatus     : Ready
      Message           : Plugin enabled (name:     Microsoft.Azure.RecoveryServices.VMSnapshot, version: 1.0.10.0).
  ExtensionHandlers[1]  :
    Type                : Microsoft.Compute.BGInfo
    TypeHandlerVersion  : 1.2.2
    Status              :
      Code              : ProvisioningState/succeeded
      Level             : Info
      DisplayStatus     : Ready
      Message           : Plugin enabled (name: Microsoft.Compute.BGInfo, version: 1.2.2).
  Statuses[0]           :
    Code                : ProvisioningState/succeeded
    Level               : Info
    DisplayStatus       : Ready
    Message             : GuestAgent is running and accepting new configurations.
    Time                : 18/08/2016 14:52:59
Statuses[0]             :
  Code                  : ProvisioningState/succeeded
  Level                 : Info
  DisplayStatus         : Provisioning succeeded
  Time                  : 18/08/2016 12:14:04
Statuses[1]             :
  Code                  : PowerState/running
  Level                 : Info
  DisplayStatus         : VM running
请注意,我使用了-Status标志,否则我将无法获得与VM状态相关的任何信息

它返回一个包含状态数组的对象。我不知道如何访问状态[1]。显示状态位置以获取“VM正在运行”消息。VM状态是否始终存储在状态[1]上

这就是我试图获取值的方式(它不返回任何值):

-是否有更简单的方法访问VM状态


非常感谢

请尝试以下命令:

$RG = "RG01"
$VM = "ADFS"

((Get-AzureRmVM -ResourceGroupName $RG -Name $VM -Status).Statuses[1]).code

本质上,这是PowerShell Inception。你必须。。。深入:D

为了100%确保您获得正确的状态(如果索引更改),您可能需要尝试在代码中过滤
PowerState/
的状态:

$RG = "RG"
$VM = "CM01"
$VMStats = (Get-AzureRmVM -Name $VM -ResourceGroupName $RG -Status).Statuses
($VMStats | Where Code -Like 'PowerState/*')[0].DisplayStatus
$RG = "RG"
$VM = "CM01"
$VMStats = (Get-AzureRmVM -Name $VM -ResourceGroupName $RG -Status).Statuses
($VMStats | Where Code -Like 'PowerState/*')[0].DisplayStatus