Functions/BloxOne/BloxOnePlatform/Remove-B1Service.ps1

function Remove-B1Service {
    <#
    .SYNOPSIS
        Removes an existing BloxOneDDI Service

    .DESCRIPTION
        This function is used to remove an existing BloxOneDDI Service

    .PARAMETER Name
        The name of the BloxOneDDI Service to remove

    .PARAMETER Object
        The BloxOneDDI Service Object(s) to remove. Accepts pipeline input

    .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-B1Service -Name "dns_bloxoneddihost1.mydomain.corp"

    .FUNCTIONALITY
        BloxOneDDI

    .FUNCTIONALITY
        Service
    #>

    [CmdletBinding(
      SupportsShouldProcess,
      ConfirmImpact = 'High'
    )]
    param(
      [Parameter(ParameterSetName="Default",Mandatory=$true)]
      [String]$Name,
      [Parameter(
        ValueFromPipeline = $true,
        ParameterSetName="Object",
        Mandatory=$true
      )]
      [System.Object]$Object,
      [Switch]$Force
    )

    process {
      $ConfirmPreference = Confirm-ShouldProcess $PSBoundParameters
      if ($Object) {
          $SplitID = $Object.id.split('/')
          if (("$($SplitID[0])/$($SplitID[1])") -ne "infra/service") {
              $Object = Get-B1Service -id $($Object.id) -Detailed
              if (-not $Object) {
                Write-Error "Error. Unsupported pipeline object. This function only supports 'infra/service' objects as input"
                return $null
              }
              $ServiceID = $Object.id
          } else {
            $ServiceID = $SplitID[2]
          }
      } else {
          $Object = Get-B1Service -Name $Name -Strict -Detailed
          if (!($Object)) {
              Write-Error "Unable to find BloxOne Service: $($Name)"
              return $null
          }
          $ServiceID = $Object.id
      }

      if($PSCmdlet.ShouldProcess("$($Object.name) ($($ServiceID))")){
        Write-Host "Removing $($Object.name).." -ForegroundColor Cyan
        Invoke-CSP -Method DELETE -Uri "$(Get-B1CSPUrl)/api/infra/v1/services/$($ServiceID)" | Out-Null
        $B1S = Get-B1Service -id $($Object.id) -Detailed
        if ($B1S) {
          Write-Host "Failed to delete service: $($B1S.name)" -ForegroundColor Red
        } else {
          Write-Host "Service deleted successfully: $($Object.name)." -ForegroundColor Green
        }
      }
    }
}