This Azure Runbook Workflow helps to Start/Stop VMs in Azure ARM portal in a defined sequence using Tags

To onboard servers, simply add a Tag named 'AutoStart' with a Json formatted value in the form {"Group":"1","Sequence":"2"}

You can target individual GROUPS or ALL VMs in the subscription and Start/Stop them in defined sequence.

START is performed in Ascending order of sequence 1.2.3.. and during STOP sequence is reversed 3..2..1

Parameters allows you to customize Tags and Values further.

 

 

PowerShell
Edit|Remove
  CREATED BY:  
   Sumesh P.  <maxsumesh@hotmail.com>     
    <Version 1.21>  <Dec 2017>    
    <Version 1.2>   <June 2017>  
.DESCRIPTION 
   Start or Stop an Azure ARM VM using this PowerShell Runbook Automation in a specified sequence. 
   You can use the integrated runbook scheduler to run the automated start/stop at a given time of day. 
 
   This requires the latest PowerShell modules to be updated in the Automation account. 
   Requires AzureRM.Compute to be at Version 3.1.0 or higher 
   Go to Automation Account -> Modules -> Update Azure Modules 
 
.PARAMETER TargetGroup 
   Default: '*'  
   Defines which Server Group to target. By default the runbook targets all groups/VMs with the AutoStart Tag. 
   You can set it to 1,2 or whatever the valid group name you want to target. 
.PARAMETER UseAutomationConnection 
   Default: $true 
   Tells the runbook to use Automation connection as the default method of login. 
   Works with parameter 'ConnCredName' 
   If 'UseAutomationConnection' is $true  it treats 'ConnCredName' as Connection name. 
   If 'UseAutomationConnection' is $false it treats 'ConnCredName' as Credential name.   
.PARAMETER ConnCredName  
   Default: 'AzureRunAsConnection' 
   Name of the CONNECTION OR CREDENTIAL ASSET used for automated login to Azure. 
   Works with parameter 'UseAutomationConnection'. By defaut the script expects the login to be based on Automation Connection. 
   If 'UseAutomationConnection' is $true  it treats 'ConnCredName' as Connection name. 
   If 'UseAutomationConnection' is $false it treats 'ConnCredName' as Credential name.  
.PARAMETER Action 
   Default: 'Start' 
   Currently it is set as the only Mandatory parameter. 
   Defines if the runbook will start or stop the VMs.  
.PARAMETER TestRun 
   Default: $true 
   When $true the runbook will only simulate actions and runs a WhatIf analysis on the tagged schedules.  
   No actual START/STOP is performed. Use this to test the runbook flow; to run normally set to $false. 
.PARAMETER TagKey 
   Default:'AutoStart' 
   Allows you to change the Name used for the Tag. The tag is used to identify VMs eligible for this automation. 
   May not be frequently required, but just in case! Also allows you to easily reprogram to use Double Tags if you so desire. 
.PARAMETER GroupTag 
   Default:'Group' 
   Allows you to change the name of the Tag used to identify server groups inside the 'AutoStart'/'TagKey' Json string. 
   May not be frequently required, but just in case! 
 
.EXAMPLE 
   Set-AzureRMVMSynchronizedStartStop -Action "Stop" -TestRun 1 
   Initiate a TEST run of the runbook to test Stopping of VMs 
.EXAMPLE 
   Set-AzureRMVMSynchronizedStartStop -Action "Start" -TestRun $false -TargetGroup 1 
   Initiates a Prod run of the runbook to START a server group 1  
.EXAMPLE 
   Set-AzureRMVMSynchronizedStartStop -Action "Start" -TestRun $false -UseAutomationConnection $false -ConnCredName "MyCred" 
   Start ALL VMs using PS credential login, it used the credential saved in the automantion account named 'MyCred' 
.EXAMPLE 
   Set-AzureRMVMSynchronizedStartStop -Action "Start" -TestRun $true -ConnCredName "MyConnection" 
   Start ALL VMs using Connection based login, it used the connection saved in the automantion account named 'MyConnection' 
.INPUTS 
   Only mandatory parameter is 'Action' to define "Start" or "Stop" 
.OUTPUTS 
   Currently you can see the output in PowerShell window or based on requirement EMAIL functionality can be added. 
 
.NOTES 
   CREATED BY:  
   Sumesh P.  <maxsumesh@hotmail.com>       
   When you modify or use the script, do retain the Creator Credits and contact while adding yours. 
 
   WARNING: Malformed Tag Values/Json Strings can cause the runbook to target ALL VMs.  
   Test thoroughly before production use. Limited testing has been performed on Non-Prod environment. 
   The Script is provided AS IS without any warranties or liabilities, use at your OWN RISK 
.COMPONENT 
   Requires AzureRM.Compute to be at Version 3.1.0 or higher 
   Go to Automation Account -> Modules -> Update Azure Modules