Functions/BloxOne/Profiles/Remove-B1ConnectionProfile.ps1

function Remove-B1ConnectionProfile {
    <#
    .SYNOPSIS
        This function is used to remove a saved BloxOne connection profile.

    .DESCRIPTION
        Connection profiles provide a convenient way of saving API Keys for multiple BloxOne Accounts, with the ability to quickly switch between them. A list of connection profiles can be retrieved using [Get-B1ConnectionProfile](https://ibps.readthedocs.io/en/latest/BloxOne/Profiles/Get-B1ConnectionProfile/).

    .PARAMETER Name
        Specify the connection profile name to remove. This field supports tab completion.

    .PARAMETER Force
        Perform the operation without prompting for confirmation. By default, this function will always prompt for confirmation unless -Confirm:$false or -Force is specified, or $ConfirmPreference is set to None.

    .EXAMPLE
        PS> Remove-B1ConnectionProfile Dev

        WARNING: Are you sure you want to delete the connection profile: Dev?

        Confirm
        Continue with this operation?
        [Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"): y

        Removed connection profile: Dev

    .EXAMPLE
        PS> Remove-BCP Test -Confirm:$false

        Removed connection profile: Test

    .FUNCTIONALITY
        BloxOne

    .FUNCTIONALITY
        Core

    .FUNCTIONALITY
        Authentication
    #>

    [Alias('Remove-BCP')]
    [CmdletBinding(
        SupportsShouldProcess,
        ConfirmImpact = 'High'
    )]
    param(
        [Parameter(Mandatory=$true)]
        [String]$Name,
        [Switch]$Force
    )
    $ConfirmPreference = Confirm-ShouldProcess $PSBoundParameters
    if (Get-B1ConnectionProfile -Name $Name) {
        $ContextConfig = (Get-B1Context)
        if ($ContextConfig.CurrentContext -ne $Name) {
            if($PSCmdlet.ShouldProcess("Remove BloxOne Connection Profile: $($Name)","Remove BloxOne Connection Profile: $($Name)",$MyInvocation.MyCommand)){
                $ContextConfig.Contexts.PSObject.Members.Remove($Name)
                $ContextConfig | ConvertTo-Json -Depth 5 | Out-File $Script:B1ConfigFile -Force -Confirm:$false
                Write-Host "Removed BloxOne connection profile: $($Name)" -ForegroundColor Green
                break
            }
        } else {
            Write-Error "Cannot delete $($Name) as it the current active BloxOne connection profile."
            break
        }
    } else {
        Write-Error "Unable to find a BloxOne connection profile with name: $($Name)"
    }
}