我使用Azure资源管理器创建了一个包含几个虚拟机和其他资源的资源组。
如何使用Azure资源管理器(ARM)作为资源组中的资源读取已配置的VM的VM状态?
对于经典虚拟机,旧脚本使用:
$vm.InstanceStatus
但是,当我切换到Azure资源管理器模式
时Switch-AzureMode AzureResourceManager
VM对象不会将.InstanceStatus识别为有效变量。
答案 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)进行测试。