Public/Get-iPilotTeamsDomain.ps1
Function Get-iPilotTeamsDomain { <# .Synopsis Displays a list of available iPilot domains. .Description Returns available iPilot domains based on supplied credentials. .Parameter ApiVersion Version of the iPilot to use. Defaults to version 1. .Parameter Credential iPilot credential .Example # Get avilable iPilot domains Get-iPilotTeamsDomain -Credential $Credential #> Param ( [System.String] $ApiUrl = $global:IP_ApiUrl, [System.String] $ApiVersion = "v1", [System.String] $ApiKey, [System.Int16] $NumberOfRecords = 100, [System.Management.Automation.PSCredential] $Credential, [Switch] $RefreshToken, [Switch] $Verbose, [Switch] $Debug ) Begin { } Process { # Verbose Switch if($PSBoundParameters.containskey("Verbose")) { $PreviousVerbosePreference = $VerbosePreference $VerbosePreference = "continue" } # Debug Switch if($PSBoundParameters.containskey("Debug")) { $PreviousDebugPreference = $DebugPreference $DebugPreference = "continue" } # Force refresh OAuth Token if ($RefreshToken.IsPresent) { $global:IP_iPilotOAuthToken = $null $global:IP_iPilotDomain = $null } Initialize-iPilotSession -ApiUrl $ApiUrl -ApiVersion $ApiVersion -Instance $global:IP_Instance # Build iPilot API Request $GetiPilotDomainRequestUri = "$ApiUrl/$ApiVersion/msteams?limit=$NumberOfRecords&page=1" Write-Verbose "GetiPilotDomainRequestUri: $GetiPilotDomainRequestUri" # Splat Invoke-RestMethod parameters Write-Verbose "Request Method: Get" $GetiPilotDomainInvokeParams = @{ Uri = $GetiPilotDomainRequestUri Method = "Get" ContentType = "application/json" Headers = @{ "X-Access-Token" = $global:IP_iPilotOAuthToken.access_token "x-api-key" = $global:IP_iPilotApiKey } } # Specify Instance if ($global:IP_Instance) { $GetiPilotDomainInvokeParams.Body = @{ "instance"= $global:IP_instance } } Write-Verbose "GetiPilotDomainInvokeParams(JSON): $($GetiPilotDomainInvokeParams |ConvertTo-Json)" # Execute the REST API Try { $GetiPilotDomainResponse = Invoke-RestMethod @GetiPilotDomainInvokeParams -ErrorAction Stop Write-Debug "User has access to $($GetiPilotDomainResponse.domains.count) domain(s)." if ($GetiPilotDomainResponse.domains.count -gt 1) { # Get domain selection from grid view $global:IP_iPilotDomain = $GetiPilotDomainResponse.domains | Out-GridView -Title "Select the domain:" -PassThru return $global:IP_iPilotDomain } elseif ($GetiPilotDomainResponse.domains.count -eq 1) { [string]$global:IP_iPilotDomain = $GetiPilotDomainResponse.domains -replace "`n",", " -replace "`r",", " return $global:IP_iPilotDomain } else { throw "No iPilot Domain(s) available. Response: $($GetiPilotDomainResponse)" } Write-Verbose "iPilot Domain: $global:IP_iPilotDomain" } Catch { Write-Error "No iPilot Domain(s) available.`n URL: $($GetiPilotDomainRequestUri).`n Error: $($_)" } # Verbose Switch if($PSBoundParameters.containskey("Verbose")) { $VerbosePreference = $PreviousVerbosePreference } # Debug Switch if($PSBoundParameters.containskey("Debug")) { $DebugPreference = $PreviousDebugPreference } } } |