3CX/0.0.10/Public/Connect-3CX.ps1
function Connect-3CX{ [CmdletBinding()] param( [Parameter(mandatory=$true, HelpMessage="3CX Credential")] [pscredential]$Credential, [Parameter(mandatory=$true, HelpMessage="3CX Server")] [string]$APIHost, [Parameter(mandatory=$false, HelpMessage="3CX Server Port")] [int]$APIPort = 443 ) $params = @{ Uri = "https://{0}:{1}/webclient/api/Login/GetAccessToken" -f $APIHost, $APIPort Method = 'POST' Body = @{ Username = $Credential.UserName SecurityCode = "" Password = $Credential.GetNetworkCredential().Password } | ConvertTo-Json ContentType = 'application/json' UseBasicParsing = $true } $result = Invoke-WebRequest @params if($result.StatusCode -ne 200){ throw "Failed to get bearer token - status code: $($result.StatusCode)" } $obj = $result.Content | ConvertFrom-Json if($obj.Status -notlike "AuthSuccess"){ throw "Failed to get Bearer - Status is not AuthSuccess" } $script:3CXSession = @{ AccessToken = $obj.Token.access_token ExpiresAt = (Get-Date).AddMinutes($obj.Token.expires_in) APIHost = $APIHost APIPort = $APIPort } } |