Scheduling Start-Stop times for Azure VMs
Overview
This article shows you how to schedule start and stop times for an Azure virtual machine. This way for example, you can schedule the VM to run only during open hours and shutdown during off hours and the weekends.
The method we'll be using to schedule the stop and start times is via an Azure Logic app, which is also very inexpensive for our use-case.
Configure the Start Logic App
First, navigate to the Logic apps service.

Once inside the service, click + Add to create a new Logic app.
Here, we will create the Logic app used to start your virtual machine at specific times.
On the Basics tab, fill out information such as the Subscription, Resource Group, Logic App name and Region. If possible, it is recommended to create the Logic app in the same environment as your virtual machine.

Since the Logic app will have a very limited number of runs per day, it is best to use the Consumption plan.
Enabling or disabling Zone redundancy is up to your own discretion.
After filling out all the relevant fields, click Review + create, then click Create.

After the deployment has created, click Go to resource.

Once inside your Logic app, on the left side-bar menu, go to Logic app designer.
Here you will see a list of common triggers. Click on Recurrence.

To start your virtual machine on specific days, change the Frequency to Week and set the Interval to 1 so the trigger will run once a week on your specified days.
Add new parameters for Time zone, On these days, At these hours and At these minutes. Configure these parameters to your own specifications.
In my example, the Preview shows the virtual machine will start at 7AM Eastern Time on Monday-Friday.

Now that your start schedule has been created, you will need to add a New step to start the virtual machine.
Under Choose an operation, search for and select Azure VM.

Under Actions, select Start virtual machine.
Fill out the information for the Subscription Id, Resource Group and Virtual Machine.
After you've filled out all the information for both the Recurrence Trigger and Start virtual machine Action, in the top left of the Logic app designer, click Save.

To have your Logic app go into action, you'll need to click Run Trigger.
Note: You may need to click Run Trigger again if you Save any changes to your Logic app in the future.
Configure the Stop Logic App
The final step would be to create a new Logic app for scheduling the stop times for the virtual machine.
Follow the same steps as before for creating a new Logic app and configuring the Recurrence Trigger, but change the At these hours parameter so it stops at your desired time.
Make sure to select Deallocate virtual machine and not Power off virtual machine. If you only power off the virtual machine, not deallocate it, then you'll still be charged as if the VM is running.
Using these two Logic apps, my virtual machine, Demo, will only be running from 7AM - 8PM EST on Monday - Friday, saving over 100 hours of runtime charges.
