public/Connect-OneShortcut.ps1
function Connect-OneShortcut { [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [string] $TenantId, [Parameter(Mandatory = $true)] [string] $ClientId, [Parameter(Mandatory = $false)] [System.Security.Cryptography.X509Certificates.X509Certificate2] $ClientCertificate, [Parameter(Mandatory = $false)] [securestring] $ClientSecret ) begin { Write-Verbose "[$(Get-Date)] [BEGIN ] $($MyInvocation.MyCommand)" } process { Write-Verbose "[$(Get-Date)] [CALL ] Test-OneConnection()" if (Test-OneConnection) { Write-Error "[$(Get-Date)] [ERROR ] Connection already established. Please use Disconnect-OneShortcut to clear the existing session." -ErrorAction Stop } else { $OneShortcutSession.AzureAdApp.TenantId = $TenantId $OneShortcutSession.AzureAdApp.ClientId = $ClientId if ($ClientCertificate) { $OneShortcutSession.AzureAdApp.ClientCertificate = $ClientCertificate } elseif ($ClientSecret) { $OneShortcutSession.AzureAdApp.ClientSecret = $ClientSecret } else { Write-Error "[$(Get-Date)] [ERROR ] Either ClientCertificate or ClientSecret has to be specified." -ErrorAction Stop } Write-Verbose "[$(Get-Date)] [CALL ] Invoke-OneTokenRequest()" $Token = Invoke-OneTokenRequest if ($Token.Response.StatusCode -eq "200") { $OneShortcutSession.Token.AccessToken = $Token.Data.AccessToken $OneShortcutSession.Token.ExpiresOn = $Token.Data.ExpiresOn Write-Host "Connected!" } else { Write-Error "[$(Get-Date)] [ERROR ] Unable to get token. Reason: $Token.Response.Message" -ErrorAction Stop } } } end { Write-Verbose "[$(Get-Date)] [END ] $($MyInvocation.MyCommand)" } } |