Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
if (!$power){Write-host "No powerstate specified. Use -Power start|stop"}
if (!$azureResourceGroup){Write-host "No Azure Resource Group specified. Use -azureResourceGroup 'ResourceGroupName'"}
# see if we already have a session. If we don't don't re-authN
if (!$AzureRMAccount.Context.Tenant) {
$AzureRMAccount = Add-AzureRmAccount
$SubscriptionName = Get-AzureRmSubscription | sort SubscriptionName | Select SubscriptionName
$TenantId = $AzureRMAccount.Context.Tenant.TenantId
Select-AzureRmSubscription -TenantId $TenantId
write-host "Enumerating VM's from AzureRM in Resource Group '"$azureResourceGroup "'"
$vms = Get-AzureRMVM -ResourceGroupName $azureResourceGroup
$vmrunninglist = @()
$vmstoppedlist = @()
Foreach($vm in $vms)
$vmstatus = Get-AzureRMVM -ResourceGroupName $azureResourceGroup -name $ -Status
$PowerState = (get-culture).TextInfo.ToTitleCase(($vmstatus.statuses)[1].code.split("/")[1])
write-host "VM: '"$vm.Name"' is" $PowerState
if ($Powerstate -eq 'Running')
$vmrunninglist = $vmrunninglist + $
if ($Powerstate -eq 'Deallocated')
$vmstoppedlist = $vmstoppedlist + $
if ($power -eq 'start') {
write-host "Starting VM's "$vmstoppedlist " in Resource Group "$azureResourceGroup
$vmstoppedlist | Invoke-Parallel -ImportVariables -NoCloseOnTimeout -ScriptBlock {
Start-AzureRMVM -ResourceGroupName $azureResourceGroup -Name $_ -Verbose }
if ($power -eq 'stop') {
write-host "Stopping VM's "$vmrunninglist " in Resource Group "$azureResourceGroup
$vmrunninglist | Invoke-Parallel -ImportVariables -NoCloseOnTimeout -ScriptBlock {
Stop-AzureRMVM -ResourceGroupName $azureResourceGroup -Name $_ -Verbose -Force }

This comment has been minimized.

Copy link

gulabpasha commented Nov 17, 2016


I hope I'm writing on to a right thread, I tried the above script to Start / Stop Multiple VM Simultaneously but wasn't succeeded.

I have multiple Resource Groups (20+) and each Resource Group has VMs running, I was looking PS script where I can use to turn those all VMs on & off in single go (Simultaneously).

I have a PS script running where it start & stops one after one for all Resource Groups.

I'm looking for a solution where I can turn on & off all VMs in one Subscription or Tenant simultaneously.

Gulab Pasha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.