4

我使用 Azure 资源管理器创建了一个包含几个 VM 和其他资源的资源组。

如何读取使用 Azure 资源管理器 (ARM) 作为资源组中的资源预配的 VM 的 VM 状态?

对于经典 VM,旧脚本使用:

$vm.InstanceStatus

但是,当我切换到 Azure 资源管理器模式时

Switch-AzureMode AzureResourceManager

VM 对象无法将 .InstanceStatus 识别为有效变量。

4

4 回答 4

4

您正在寻找的 PowerShell one-liner 可能看起来像这样:

Get-AzureRmVM -ResourceGroupName "MyRGName" -Name "MyVmName" -Status | `
    select -ExpandProperty Statuses | `
    ?{ $_.Code -match "PowerState" } | `
    select -ExpandProperty DisplayStatus

这将显示VM deallocatedVM 是否已停止或VM running正在运行。

要获取Get-AzureRmVmcmdlet,请运行以下命令:

Install-Package AzureRM
Install-AzureRM
于 2015-12-06T08:08:15.910 回答
0

嗨,由于上面的示例,我提供了一个脚本来执行此操作。

https://miteshc.wordpress.com/2016/02/24/automation-runbook-shutdown-azurearmvm-with-tags/

提炼

$ResourceGroup = "RG_Name" $VMs = Find-AzureRmResource -ResourceGroupNameContains $ResourceGroup | Where-Object {$_.Tags.Name-eq "Autoshutdown" -and $_.Tags.Value -eq "Yes"} Foreach ($VM in $VMs) { $VMStatus = Get-AzureRmVM -ResourceGroupName $ResourceGroup -Name $vm.Name -Status | 选择 -ExpandProperty 状态 | ?{ $_.Code -match "PowerState" } | 选择 -ExpandProperty 显示状态

   if($VMStatus -eq "VM Running")
       {
          Write-Output "status of" $vm.Name "is" """$VMStatus"""
          Stop-AzureRmVM -ResourceGroupName $ResourceGroup -Name $vm.Name -Force
       }
       else
       {
          Write-Output "status of" $vm.Name "is" """$VMStatus"""
       }

}

谢谢 !米特什

于 2016-02-24T22:37:55.303 回答
0

尝试以下操作:

Get-AzureVM -ResourceGroupName <RGName> -Name <VMName> -Status

结果,您应该看到状态,并且在其中您应该看到一个看起来像“PowerState/running”等的状态。

希望这可以帮助!:)

于 2015-11-17T22:03:21.490 回答
-1

您可以使用下面的 PowerShell 代码读取在 ARM 下预配的 Azure VM 的预配状态:

$vm = Get-AzureRmVM -Name <VMName> -ResourceGroupName <ResourceGroupName>
$vm.ProvisioningState

这是使用 2015 年 11 月发布的最新 Azure PowerShell 修订版 (1.0.1) 进行测试的。

于 2015-12-04T14:07:51.230 回答