Azure资源管理器vm状态

时间:2015-10-23 18:48:47

标签: powershell azure azure-resource-manager

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

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

对于经典虚拟机,旧脚本使用:

$vm.InstanceStatus

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

Switch-AzureMode AzureResourceManager

VM对象不会将.InstanceStatus识别为有效变量。

4 个答案:

答案 0 :(得分:4)

您正在寻找的PowerShell单行内容可能如下所示:

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

如果VM已停止,则会显示VM deallocated;如果正在运行,则会显示VM running

要掌握Get-AzureRmVm cmdlet,请运行以下命令:

Install-Package AzureRM
Install-AzureRM

答案 1 :(得分:0)

尝试以下方法:

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

在结果中,您应该看到状态,在其中您应该看到一个看起来像&#34; PowerState / running&#34;等等。

希望这有帮助! :)

答案 2 :(得分: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 |     select -ExpandProperty状态| ?{$ _。代码匹配“PowerState”} |选择-ExpandProperty displaystatus

   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"""
       }

}

谢谢! Mitesh

答案 3 :(得分:-1)

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

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

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