# List all the virtual machines
Get-AzVM
#This command gets properties for all the virtual machines in the resource group named Cloud-Operations.
Get-AzVM -ResourceGroupName "Cloud-Operations"
#This command starts the virtual machine named "Cloud-Ops-VM1" in Cloud-Operations Resource Group.
Start-AzVM -ResourceGroupName "Cloud-Operations" -Name "CloudOps-VM1"
# This command stops the virtual machine named named "Cloud-Ops-VM1" in "Cloud-Operations" Resource Group.
Stop-AzVM -ResourceGroupName "Cloud-Operations" -Name "CloudOps-VM1"
Start-AzureRmVM -ResourceGroupName "Cloud-Operations" -Name "CloudOps-VM1"
Stop-AzureRmVM -ResourceGroupName "Cloud-Operations" -Name "CloudOps-VM1"
#Get-AzureRmVM
#Get-AzureRmVM | Where-Object {$_.Tags.StartTime -eq '9am'}
$AzVMs = Get-AzureRmVM | Select-Object -Property Name, ResourceGroupName
foreach ($VM in $AzVMs)
{
$VMName = $VM.Name
$ResourceGroupName = $VM.ResourceGroupName
Write-Host "Virtual Machine: $VMName"
Write-Host "ResourceGroup : $ResourceGroupName"
Write-Host " "
}
Schedule Start and Stop of Azure VM
In this tutorial, I will show you how to automatically start and stop vm in azure.
We can achieve the automation Schedule Azure Virtual Machine Start/Stop with Azure Automation Runbooks and Adding Resource Tags to Azure VM.
Procedure/Approach:
- Create an Azure VM or use any existing VM in Azure.
- Assigning start and stop tags to a VM.
- Create a Azure Automation Account with "Run as Account" or use an existing Automation Account.
- Creating start and stop powershell workflow runbooks.
- Testing the start and stop runbook scripts.
- Creating a schedule time for Azure VM start and stop.
- Linking scheduled tasks to an automation runbook.
Implementation:
Step 1: Create a basic Azure VM or use an existing Azure VM of your choice.
Here, I will be using an existing Azure VM for demo.
Step 2: Select your target virtual machine and assign StartTime and StopTime tags.
Example: StartTime = 9:00am; StopTime = 9:00pm
Step 3: Create an Azure Automation Account Run as Account
Step 4: Install Az Modules from Azure Automation Account Gallery
Step 5: Create a powershell workflow runbook.
## Schedule Azure VM Startup
workflow Cloud-Ops-StartTime-Test-Runbook
{
inlineScript {
$azConn = Get-AutomationConnection -Name 'AzureRunAsConnection'
# Add the automation account context to the session
Add-AzureRMAccount `
-ServicePrincipal `
-Tenant $azConn.TenantID `
-ApplicationId $azConn.ApplicationId `
-CertificateThumbprint $azConn.CertificateThumbprint
# Get the Azure VMs with tags matching the value '9:00am'
$azVMs = Get-AzureRMVM | Where-Object {$_.Tags.StartTime -eq '9:00am'}
# Start Azure VM/VMs
$azVMS | Start-AzureRMVM
}
}
## Schedule Azure VM Shutdown
workflow Cloud-Ops-StopTime-Test-Runbook {
inlineScript {
$azConn = Get-AutomationConnection -Name 'AzureRunAsConnection'
# Add the automation account context to the session
Add-AzureRMAccount `
-ServicePrincipal `
-Tenant $azConn.TenantID `
-ApplicationId $azConn.ApplicationId `
-CertificateThumbprint $azConn.CertificateThumbprint
# Get the Azure VMs with tags matching the value '9:00pm'
$azVMs = Get-AzureRMVM | Where-Object {$_.Tags.StopTime -eq '9:00pm'}
# Start Azure VM/VMs
$azVMS | Stop-AzureRMVM -Force
}
}


