Public/Get-iPilotCarrier.ps1
Function Get-iPilotCarrier { <# .Synopsis Displays iPilot user(s) .Description Returns iPilot Carrier in iPilot domain with optional filters. .Parameter CarrierName Filter results by user's First Name. .Parameter ApiVersion Version of the NuWave iPilot to use. Defaults to v1. .Parameter iPilotDomain iPilot Domain Name. .Parameter NumberOfRecords Number of records returned by API (limit 100) .Example # Get avilable numbers with the status set to Configured using API Version v1 in the contoso.com iPilot domain Get-iPilotCarrier -NumberOfRecords 10 -iPilotDomain contoso.com .Example # Get carrier named "Contoso" in the contoso.com iPilot domain with Verbose output Get-iPilotCarrier -CarrierName "Contoso" -iPilotDomain contoso.com -Verbose #> Param ( [Parameter( Mandatory = $false, ValueFromPipeline = $true, HelpMessage = 'Allowed characters: Alphanumeric, spaces, and hyphens')] [ValidatePattern('^[a-zA-Z0-9 ]+$')] [System.String] $CarrierName, [System.String] $ApiUrl = $global:IP_ApiUrl, [System.String] $ApiKey = $global:IP_ApiKey, [System.String] $ApiVersion = "v1", [System.String] $iPilotDomain = $global:IP_iPilotDomain, [System.Int16] $NumberOfRecords = [System.Int16]::MaxValue, [System.Management.Automation.PSCredential] $Credential ) Begin { # Set iPilot Domain if (!$global:IP_iPilotDomain -and !$iPilotDomain) { throw "Run Get-iPilotTeamsDomain or provide domain using -iPilotDomain" } elseif (!$iPilotDomain) { $iPilotDomain = $global:IP_iPilotDomain Write-Verbose "iPilot Domain: $iPilotDomain" } # else use passed in iPilotDomain } Process { # Verbose Switch if($PSBoundParameters.containskey("Verbose")) { $PreviousVerbosePreference = $VerbosePreference $VerbosePreference = "continue" } # Debug Switch if($PSBoundParameters.containskey("Debug")) { $PreviousDebugPreference = $DebugPreference $DebugPreference = "continue" } # Get/re-use OAuth Token $InitializeiPilotSessionSplat = @{ ApiUrl = $ApiUrl ApiVersion = $ApiVersion ApiKey = $ApiKey Credential = $Credential } if ($global:IP_Instance) { $InitializeiPilotSessionSplat += @{ Instance = $global:IP_Instance } } if ($VerbosePreference -eq "Continue") { $InitializeiPilotSessionSplat += @{ Verbose = $true } } if ($DebugPreference -eq "Continue") { $InitializeiPilotSessionSplat += @{ Debug = $true } } Initialize-iPilotSession @InitializeiPilotSessionSplat # Build iPilot API Request $GetiPilotCarrierRequestUri = "$ApiUrl/$ApiVersion/msteams/$iPilotDomain/carriers?limit=$NumberOfRecords&page=1" if ($Instance) { $GetiPilotCarrierRequestUri += "&instance=$Instance" } Write-Verbose "GetiPilotCarrierRequestUri: $GetiPilotCarrierRequestUri" # Splat Invoke-RestMethod parameters Write-Verbose "Request Method: Get" $GetiPilotCarrierInvokeParams = @{ Uri = $GetiPilotCarrierRequestUri Method = "Get" ContentType = "application/json" Headers = @{ "X-Access-Token" = $iPilotOAuthToken.access_token "x-api-key" = $iPilotApiKey } } Write-Verbose "GetiPilotCarrierInvokeParams:`n$($GetiPilotCarrierInvokeParams | Format-Table | Out-String)" -Verbose # Execute the REST API Try { $GetiPilotCarrierResponse = Invoke-RestMethod @GetiPilotCarrierInvokeParams -ErrorAction Stop Write-Debug "GetiPilotCarrierResponse:`n$GetiPilotCarrierResponse" } Catch { Write-Error "Failed to retreive iPilot Carrier(s)`nStatus: $($GetiPilotCarrierResponse.status)`nURL: $($GetiPilotCarrierRequestUri). Error: $($_)" break } # Convert response object to array of objects $Carriers = @() ($GetiPilotCarrierResponse.carriers | Out-String) -split "`r`n" | Where-Object {$_} | ForEach-Object { $Carrier = $_.Split(":").TrimStart() $Carriers += [pscustomobject]@{'CarrierId'=$Carrier[0];'CarrierName'=$Carrier[1]} } Write-Debug "Carriers:`n$Carriers" # If CarrierName specified, return ID if ($CarrierName) { $Carriers = $Carriers | Where-Object {$_.CarrierName -eq $CarrierName} } # Return Carrier Array if ($Carriers) { return $Carriers } else { Write-Error "No Carrier found." } # Verbose Switch if($PSBoundParameters.containskey("Verbose")) { $VerbosePreference = $PreviousVerbosePreference } # Debug Switch if($PSBoundParameters.containskey("Debug")) { $DebugPreference = $PreviousDebugPreference } } } |