How to Get Azure VMs status using PowerShell script

In this article, I will show you how to get Azure VMs status using Azure powershell script.

Azure VMs status

To check status of your servers, you need few things:

  • Azure Credentials
  • Environment
  • TenantID
  • Subscription
  • Resource Group Name

Below you can find an example for converting your password to secure string and adding it with account ID to azure credentials variable:

1- $an example = ConvertTo-SecureString "67t1uS5HfXCc9L4d3P02" -AsPlainText -Force
2- $AzureCred = New-Object System.Management.Automation.PSCredential ("[email protected]", $SecPasswd)

Now, when credentials are set you can use Add-AzureRmAccount which adds an authenticated account to use for Azure Resource Manager cmdlet requests.

1- Add-AzureRmAccount -Environment AzureBros -TenantId e0527c39-0369-376d-b139-342dcd316geb -Subscription 'PowerShellBros 1' -Credential $AzureCred

Below you can find a simple script on how to get status of your VMs using Get-AzureRmVM command. I wanted to display the following properties ResourceGroupName, Name, Location, PowerState:

1- $SecPasswd = ConvertTo-SecureString "67t1uS5HfXCc9L4d3P02" -AsPlainText -Force
$AzureCred = New-Object System.Management.Automation.PSCredential ("[email protected]", $SecPasswd)
 
2- Add-AzureRmAccount -Environment AzureBros -TenantId e0527c39-0369-376d-b139-342dcd316geb -Subscription 'PowerShellBros 1' -Credential $azurecred
 
3- #Get VM status and add results to variable
$AllVMs = Get-AzureRmVM -ResourceGroupName ps_bros -Status | Select-Object ResourceGroupName,Name,Location, @{ label = “VMStatus”; Expression = { $_.PowerState } }
 
4- #Or get VM status where server names match VM and add results to variable
$AllVMs = Get-AzureRmVM -ResourceGroupName ps_bros -Status | Where-Object {$_.name -match "VM"} | Select-Object ResourceGroupName,Name,Location, @{ label = “VMStatus”; Expression = { $_.PowerState } }
 
5- #Display results in console in Wrap Mode
$AllVMs | Format-Table -Auto -Wrap
 
6- #Display results in new window call Grid view
$AllVMs | Out-GridView -Title "Azure VMs"
 
7- #Display running VMs in console
$AllVMs | Where-Object {$_.Status -eq "VM running"}
 
8-#Export results to CSV file and save on local machine
$AllVMs | Export-Csv "c:\users\$env:username\documents\Azure_VMs_Status.csv" -Force -NoTypeInformation

Avatar

About Shachindra Yadav

I, Shachindra Yadav, a Cloud Certified, DevOps and technology enthusiastic person, more passionate to learn and write blogs in my free time.

View all posts by Shachindra Yadav →