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