Stop or Start all WebApps in your Azure subscription with Stop-Start-All-WebApps.ps1 a simple PowerShell workflow runbook that will help you automate the process of stopping or starting every single WebApp (Website) you’ve deployed.
The script receives two required parameters:
- Stop: If set to true stop the WebApps (Websites) otherwise start the WebApps (Websites)
- CredentialAssetName: The name of a valid Credential Asset (AutomationPSCredential) you must have previously configured.
As you can see below, the script is quite simple and uses the following PowerShell Activities and Cmdlets:
Here is the script:
1<#
2 .SYNOPSIS
3 Start or Stop all WebApps (Websites) in your subscription.
4
5 .DESCRIPTION
6 Runbook which allows you to start/stop all WebApps (Websites) in your subscription.
7
8 .PARAMETER Stop
9 If set to true: stop the WebApps (Websites). Otherwise start the WebApps (Websites)
10
11 .PARAMETER CredentialAssetName
12 The name of a working AutomationPSCredential
13
14 .NOTES
15 AUTHOR: Carlos Mendible
16 LASTEDIT: June 2, 2016
17#>
18Workflow Stop-Start-All-WebApps
19{
20 # Parameters
21 Param(
22 [Parameter (Mandatory= $true)]
23 [bool]$Stop,
24
25 [Parameter (Mandatory= $true)]
26 [string]$CredentialAssetName
27 )
28
29 #The name of the Automation Credential Asset this runbook will use to authenticate to Azure.
30 $CredentialAssetName = $CredentialAssetName;
31
32 #Get the credential with the above name from the Automation Asset store
33 $Cred = Get-AutomationPSCredential -Name $CredentialAssetName
34 if(!$Cred) {
35 Throw "Could not find an Automation Credential Asset named '${CredentialAssetName}'. Make sure you have created one in this Automation Account."
36 }
37
38 #Connect to your Azure Account
39 Add-AzureRmAccount -Credential $Cred
40 Add-AzureAccount -Credential $Cred
41
42 $status = 'Stopped'
43 if ($Stop)
44 {
45 $status = 'Running'
46 }
47
48 # Get Running WebApps (Websites)
49 $websites = Get-AzureWebsite | where-object -FilterScript{$_.state -eq $status }
50
51 foreach -parallel ($website In $websites)
52 {
53 if ($Stop)
54 {
55 $result = Stop-AzureWebsite $website.Name
56 if($result)
57 {
58 Write-Output "- $($website.Name) did not shutdown successfully"
59 }
60 else
61 {
62 Write-Output "+ $($website.Name) shutdown successfully"
63 }
64 }
65 else
66 {
67 $result = Start-AzureWebsite $website.Name
68 if($result)
69 {
70 Write-Output "- $($website.Name) did not start successfully"
71 }
72 else
73 {
74 Write-Output "+ $($website.Name) started successfully"
75 }
76 }
77 }
78}
You can download the script from the Technet Script Gallery, import it as a runbook for your automation account in the Azure portal or simply copy the code from this post.
Hope it helps!
Comments