2015-10-23 60 views
4

我使用Azure资源管理器来创建具有几个虚拟机和其他资源的资源组。Azure资源管理器虚拟机状态

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

拥有经典的虚拟机,旧脚本使用:

$vm.InstanceStatus 

然而,当我切换到Azure的资源管理模式

Switch-AzureMode AzureResourceManager 

VM对象不承认.InstanceStatus为有效变量。

回答

0

尝试以下操作:

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

在结果中,你应该看到的状态,并在这个你应该看到一个看起来像“将PowerState /运行”等

希望这有助于! :)

+0

我搬到了AzureRM。最初我想要一种直接的方式来获取状态作为变量,以便在脚本中使用,而不是只能在VM定义中读取它。不管怎么说,还是要谢谢你。我希望你的回答对别人有帮助。谢谢。 –

-1

您可以阅读使用下面的PowerShell代码下ARM供应的天青VM的配置状态:

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

这与最新的Azure的PowerShell的版本(1.0.1)测试其释放2015年十一月

+0

虚拟机的供应状态仅告诉您供应虚拟机的状态是什么,而不是它正在运行,已停止等。 – Erica

4

,你正在寻找的可能是这个样子的PowerShell的一行代码:

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

这将显示VM deallocated如果虚拟机停止运行或者VM running运行。

要获得Get-AzureRmVm cmdlet的保持,运行以下命令:

Install-Package AzureRM 
Install-AzureRM 
0

您好我提供了一个脚本能够做到这一点得益于上面的例子。

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

提取

$资源组= “RG_Name” $虚拟机=查找-AzureRmResource -ResourceGroupNameContains $资源组| 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