-
Notifications
You must be signed in to change notification settings - Fork 0
/
LoginAzure.ps1
63 lines (53 loc) · 2 KB
/
LoginAzure.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<#
.SYNOPSIS
Load Azure PowerShell Modules and authenticate
.DESCRIPTION
Easily connect to Azure PowerShell by storing subscription details in a JSON file
.PARAMETER Subscription
Name of the subscription to connect to. This name should be a key in the "subscriptions" object in
the Config File
.PARAMETER ConfigFile
Name of the JSON configuration file. Must contain the following:
- tenantId - Azure Tenant ID GUID.
- subscription - Objects. Each key is a friendly name which can be passed to the
Subscription parameter. The value is a subscription ID GUID.
May also contain:
- username - the username (UPN/email address) you use to authenticate to Azure
.PARAMETER AzureDeploymentModel
Which Azure Modules to load, RM (Resource Manager), Classic or both.
#>
[CmdletBinding()]
Param(
[Parameter(Position=1)] [string] $Subscription = "prod",
[string] $ConfigFile = $(Join-Path $PSScriptRoot "LoginAzure.json"),
[ValidateSet("RM","Classic","Both")] [string] $AzureDeploymentModel = "RM"
)
# Load settings from JSON
$Settings = Get-Content $ConfigFile | ConvertFrom-Json
# Ensure that required values are present
if(! $Settings.TenantId) {
Write-Error "TenantId not set in Config File"
exit
}
if(! $Settings.subscriptions.$Subscription) {
Write-Error "Subscription $Subscription not set in Config File"
exit
}
# If username is present, pass it to Get-Credential
$gcparams = @{
'Message' = 'Azure credential'
}
if($Settings.username) {
$gcparams['UserName'] = $Settings.username
}
# Get a credential for Azure
$AzureCred = Get-Credential @gcparams
# Import the PowerShell modules and authenticate to Azure
if(@("RM", "Both") -contains $AzureDeploymentModel) {
Get-Module -ListAvailable AzureRM* | Import-Module
Add-AzureRmAccount -TenantId $Settings.TenantId -Credential $AzureCred -SubscriptionId $Settings.subscriptions.$Subscription
}
if (@("Classic", "Both") -contains $AzureDeploymentModel) {
Import-Module Azure
Add-AzureAccount -TenantId $Settings.TenantId -Credential $AzureCred
}