title: How to check if a virtual machine is running using Python
body: <p>I am writing a python runbook to be able to start or stop a Virtual machine. If the VM is running, I would like to stop it. If it is not running, I would like to turn it on. I need to write an if condition to do this but I don't know how to get the status of my Virtual machine in azure so I can make the comparison.</p>
  
  <p>I tried using the following:</p>
  
  <pre><code>compute_client.virtual_machines.get(resourceGroupName, vmName, expand = 'instanceview')
  </code></pre>
  
  <p>But when I print this, I don't see how to access the status of the Virtual machine. </p>
  
  <p>This is my script code:</p>
  
  <pre><code>import os
  from azure.mgmt.compute import ComputeManagementClient
  import azure.mgmt.resource
  import automationassets
  
  import sys
  
  resourceGroupName = str(sys.argv[1])
  vmName = str(sys.argv[2])
  
  def get_automation_runas_credential(runas_connection):
      from OpenSSL import crypto
      import binascii
      from msrestazure import azure_active_directory
      import adal
  
      # Get the Azure Automation RunAs service principal certificate
      cert = automationassets.get_automation_certificate("AzureRunAsCertificate")
      pks12_cert = crypto.load_pkcs12(cert)
      pem_pkey = crypto.dump_privatekey(crypto.FILETYPE_PEM,pks12_cert.get_privatekey())
  
      # Get run as connection information for the Azure Automation service principal
      application_id = runas_connection["ApplicationId"]
      thumbprint = runas_connection["CertificateThumbprint"]
      tenant_id = runas_connection["TenantId"]
  
      # Authenticate with service principal certificate
      resource ="https://management.core.windows.net/"
      authority_url = ("https://login.microsoftonline.com/"+tenant_id)
      context = adal.AuthenticationContext(authority_url)
      return azure_active_directory.AdalAuthentication(
      lambda: context.acquire_token_with_client_certificate(
              resource,
              application_id,
              pem_pkey,
              thumbprint)
      )
  
  # Authenticate to Azure using the Azure Automation RunAs service principal
  runas_connection = automationassets.get_automation_connection("AzureRunAsConnection")
  azure_credential = get_automation_runas_credential(runas_connection)
  
  # Initialize the compute management client with the RunAs credential and specify the subscription to work against.
  compute_client = ComputeManagementClient(
      azure_credential,
      str(runas_connection["SubscriptionId"])
  )
  
  printMe = compute_client.virtual_machines.get(resourceGroupName, vmName, expand = 'instanceview')
  print(printMe)
  
  #Start the VM if not running:
  
  print('\n' + 'Starting the ' + ' ' + vmName + ' ' + 'in ' + ' ' + resourceGroupName)
  async_vm_start = compute_client.virtual_machines.start(
    resourceGroupName, vmName)
  async_vm_start.wait()
  
  
  
  </code></pre>