BitTitan.Runbooks.MSOnline.psm1
<#
.SYNOPSIS Powershell module for common MSOnline functions and resources used in BitTitan Runbooks .NOTES Version: 0.1.3 Last updated: 10 September 2018 Copyright (c) BitTitan, Inc. All rights reserved. Licensed under the MIT License. #> <# .SYNOPSIS This function connects to MSOnline using admin account credentials or a MSPComplete Endpoint. .DESCRIPTION This function connects to MSOnline using admin account credentials or a MSPComplete Endpoint. It returns whether the connection and logon was successful. .PARAMETER username The username of the MSOnline admin account. .PARAMETER password The password of the MSOnline admin account. .PARAMETER endpoint The MSPComplete Endpoint for the MSOnline admin credentials. This endpoint can be masked or unmasked. .EXAMPLE Connect-MSOnlineAdminAccount -Endpoint $Endpoint .EXAMPLE $Endpoint | Connect-MSOnlineAdminAccount .EXAMPLE Connect-MSOnlineAdminAccount -Username $username -Password $password #> function Connect-MSOnlineAdminAccount { param ( # The username of the MSOnline account. [Parameter(Mandatory=$true, ParameterSetName="credential")] [String]$username, # The password of the MSOnline account. [Parameter(Mandatory=$true, ParameterSetName="credential")] [SecureString]$password, # The MSPComplete Endpoint. [Parameter(Mandatory=$true, ParameterSetName="endpoint", ValueFromPipeline=$true)] $endpoint ) # If given endpoint, retrieve credential directly if ($PSCmdlet.ParameterSetName -eq "endpoint") { $msolCredential = $endpoint | Get-UnmaskedMSPCompleteEndpoint ` | Get-CredentialFromUnmaskedMSPCompleteEndpoint $username = $endpoint.Configuration.AdministrativeUserName } # Create the MSOnline credential from the given username and password else { $msolCredential = New-Object System.Management.Automation.PSCredential($username, $password) } # Logon to MSOnline try { Connect-MsolService -Credential $msolCredential -ErrorAction Stop # Logon was successful Write-Information "Connection and logon to MSOnline successful with username '$($username)'." return $true } catch { # Logon was unsuccessful Write-Error "Failed MSOnline account login with username '$($username)'. $($_.Exception.Message)" return $false } } |