-
Notifications
You must be signed in to change notification settings - Fork 10
/
new-AzureADPowershellSession.ps1
128 lines (97 loc) · 4.58 KB
/
new-AzureADPowershellSession.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<#
.SYNOPSIS
This function creates the powershell session to Azure AD.
.DESCRIPTION
This function creates the powershell session to Azure AD.
.PARAMETER azureADCredential
The credential utilized to connect to azure ad.
.PARAMETER azureCertificateThumbprint
The certificate thumbprint for the associated azure application.
.PARAMETER azureTenantID
The tenant ID associated with the azure application.
.PARAMETER azureApplicationID
The application ID for azure management.
.PARAMETER azureEnvironmentName
The azure environment for the connection to azure ad.
.OUTPUTS
Powershell session to use for exchange online commands.
.EXAMPLE
new-AzureADPowershellSession -AzureADCredential $CRED -azureEnvironmentName NAME
#>
Function New-AzureADPowershellSession
{
[cmdletbinding()]
Param
(
[Parameter(ParameterSetName = "UserCredentials",Mandatory = $false)]
[pscredential]$azureADCredential=$NULL,
[Parameter(ParameterSetName = "CertificateCredentials",Mandatory = $true)]
[string]$azureCertificateThumbPrint,
[Parameter(ParameterSetName = "CertificateCredentials",Mandatory = $true)]
[string]$azureTenantID,
[Parameter(ParameterSetName = "CertificateCredentials",Mandatory = $true)]
[string]$azureApplicationID,
[Parameter(ParameterSetName = "UserCredentials",Mandatory = $true)]
[Parameter(ParameterSetName = "CertificateCredentials",Mandatory = $true)]
[string]$azureEnvironmentName,
[Parameter(ParameterSetName = "UserCredentials",Mandatory = $false)]
[Parameter(ParameterSetName = "CertificateCredentials",Mandatory = $false)]
[boolean]$isAudit=$FALSE
)
#Output all parameters bound or unbound and their associated values.
write-functionParameters -keyArray $MyInvocation.MyCommand.Parameters.Keys -parameterArray $PSBoundParameters -variableArray (Get-Variable -Scope Local -ErrorAction Ignore)
#Define variables that will be utilzed in the function.
[boolean]$isCertAuth=$false
#$exchangeOnlineCommands=@('get-ExoRecipient','new-distributionGroup','get-recipient','set-distributionGroup','get-distributionGroupMember','get-mailbox','get-unifiedGroup','set-UnifiedGroup')
#Initiate the session.
Out-LogFile -string "********************************************************************************"
Out-LogFile -string "BEGIN NEW-AzureADPowershellSession"
Out-LogFile -string "********************************************************************************"
if ($azureCertificateThumbPrint -ne "")
{
$isCertAuth=$true
out-logfile -string ("Is certificate auth = "+$isCertAuth)
}
if ($isCertAuth -eq $False)
{
if ($azureADCredential -ne $NULL)
{
try
{
Out-LogFile -string "Creating the azure active directory powershell session."
Connect-AzureAD -Credential $azureADCredential -azureEnvironmentName $azureEnvironmentName
}
catch
{
Out-LogFile -string $_ -isError:$TRUE -isAudit $isAudit
}
}
else
{
try
{
Out-LogFile -string "Creating the azure active directory powershell session."
Connect-AzureAD -azureEnvironmentName $azureEnvironmentName
}
catch
{
Out-LogFile -string $_ -isError:$TRUE -isAudit $isAudit
}
}
}
elseif ($isCertAuth -eq $TRUE)
{
try
{
out-logfile -string "Creating the connection to exchange online powershell using certificate authentication."
connect-AzureAD -certificateThumbPrint $azureCertificateThumbPrint -applicationID $azureApplicationID -tenantID $azureTenantID -azureEnvironmentName $azureEnvironmentName
}
catch
{
out-logfile -string $_ -isError:$TRUE -isAudit $isAudit
}
}
Out-LogFile -string "The exchange online powershell session was created successfully."
Out-LogFile -string "END NEW-AZUREADPOWERSHELL SESSION"
Out-LogFile -string "********************************************************************************"
}