Public/Remove-iPilotDepartment.ps1
Function Remove-iPilotDepartment { <# .Synopsis Removes a department from iPilot .Description Removes the specified department name if it exists in iPilot .Parameter DepartmentName Department's Name .Parameter ApiVersion Version of the NuWave iPilot to use. Defaults to v1. .Parameter ApiKey iPilot API Key supplied by NuWave. .Parameter iPilotDomain iPilot Domain Name. .Parameter Credential Credentials for iPilot API .Example # Get avilable numbers with the status set to Ported using API Version v1 in the contoso.com iPilot domain New-iPilotTeamsUserAssignment -UserPrincipalName jdoe@contoso.com -TelephoneNumber 1235551234 -iPilotDomain contoso.com -ApiVersion = "v1" #> Param ( [Parameter( Mandatory = $true, ValueFromPipeline = $true, HelpMessage = 'Allowed characters: Alphanumeric, spaces, and hyphens')] [ValidatePattern('^[a-zA-Z0-9 ]+$')] [System.String] $DepartmentName, [System.String] $ApiUrl = $global:IP_ApiUrl, [System.String] $ApiVersion = "v1", [System.String] $ApiKey = $global:IP_ApiKey, [System.String] $iPilotDomain, [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 # Check if group existis $Department = Get-iPilotDepartment -DepartmentName $DepartmentName if ($Department) { Write-Output "Removing $($Department.departmentName)" } else { Write-Error "$DepartmentName does not exist in $iPilotDomain" exit 1 } # Build iPilot API Request $RemoveiPilotDepartmentRequestUri = "$ApiUrl/$ApiVersion/msteams/$iPilotDomain/departments" if ($global:IP_Instance) { $RemoveiPilotDepartmentRequestUri += "?instance=$global:IP_Instance" } Write-Verbose "RemoveiPilotDepartmentRequestUri: $RemoveiPilotDepartmentRequestUri" # Build Request Body Write-Verbose "Request Method: Post" $RemoveiPilotDepartmentRequestBody = @{ departmentName = $DepartmentName } # Splat Invoke-RestMethod Parameters $RemoveiPilotDepartmentInvokeParams = @{ Uri = $RemoveiPilotDepartmentRequestUri Method = "Post" ContentType = "application/json" Headers = @{ "X-Access-Token" = $global:IP_iPilotOAuthToken.access_token "x-api-key" = $global:IP_iPilotApiKey } Body = $RemoveiPilotDepartmentRequestUserBody | ConvertTo-Json } # Execute the REST API Try { $RemoveiPilotDepartmentResponse = Invoke-RestMethod @RemoveiPilotDepartmentInvokeParams -ErrorAction Stop } Catch { Write-Error "Failed to remove $DepartmentName`n`nURL: $($RemoveiPilotDepartmentRequestUri)`nBody: $($RemoveiPilotDepartmentRequestBody | Format-Table | Out-String)`n Error: $($_.Exception.Message)" break } # Return User object if ($RemoveiPilotDepartmentResponse.statuscode -eq 200) { Write-Output "Successfully removed iPilot Department.`nDepartmentName: $DepartmentName" } else { Write-Error "Failed to remove $DepartmentName`n`nURL: $($RemoveiPilotDepartmentRequestUri)`nBody: $($RemoveiPilotDepartmentRequestBody | Format-Table | Out-String)`n Error: $($_.Exception.Message)" } # Verbose Switch if($PSBoundParameters.containskey("Verbose")) { $VerbosePreference = $PreviousVerbosePreference } # Debug Switch if($PSBoundParameters.containskey("Debug")) { $DebugPreference = $PreviousDebugPreference } } } |