Unlike classic model, there is no direct cmdlet to know the status for virtual machine provisioned using resource manager model. We can use the following commands to know the status of a particular virtual machine:
$resourceGroupName = "sharepointvms" $vmName = "indspstd01" $vmStatuses = $(Get-AzureRmVM -ResourceGroupName $resourceGroupName -VMName $vmName -Status).Statuses foreach($vmStatus in $vmStatuses){ if($vmStatus.Code -ne "ProvisioningState/succeeded") { Write-Output "$vmName status is `"$($vmStatus.displaystatus)`"" } }
Replace the value of $resourceGroupName and $vmName appropriately, in your environment. You should get an output like below:

You can use below script to get status for all VMs in your subscription in one go:
$resourceGroups = Get-AzureRmResourceGroup $vmstatus = @() foreach($resourceGroup in $resourceGroups){ $vms = Get-AzureRmVM -ResourceGroupName $($resourceGroup.ResourceGroupName) foreach($vm in $vms){ $statuses = $(Get-AzureRmVM -ResourceGroupName $($resourceGroup.ResourceGroupName) ` -Name $($vm.Name) -Status).Statuses foreach($status in $statuses){ if($status.Code -notlike "*provisioning*"){ $vmRunningStatus = $status.Code.Split('/')[1] $vmstatusObject = New-Object -TypeName PSObject $vmstatusobject | Add-Member -MemberType NoteProperty -Value $resourceGroup.ResourceGroupName -Name ResourceGroupName $vmstatusobject | Add-Member -MemberType NoteProperty -Value $vm.Name -Name VMName $vmstatusobject | Add-Member -MemberType NoteProperty -Value $vmRunningStatus -Name VMStatus $vmstatus += $vmstatusobject } } } }
This should generate a nice output like below:
