Public/Remove-VirtualServer.ps1

Function Remove-VirtualServer{
<#
.SYNOPSIS
    Remove the specified virtual server. Confirmation is needed.
.NOTES
    Virtual server names are case-specific.
#>

    [CmdletBinding( SupportsShouldProcess=$true, ConfirmImpact="High")]    

    param (
        $F5Session=$Script:F5Session,
        [Parameter(Mandatory=$true)][string]$VirtualServerName

    )

    #Test that the F5 session is in a valid format
    Test-F5Session($F5Session)

    Write-Verbose "NB: Virtual server names are case-specific."

    #Build the URI for this pool
    $URI = $F5session.BaseURL + 'virtual/{0}' -f ($VirtualServerName -replace '[/\\]','~')

    if ($pscmdlet.ShouldProcess($VirtualServerName)){

        #Check whether the specified virtual server exists
        If (!(Test-VirtualServer -F5session $F5session -VirtualServerName $VirtualServerName)){
            Write-Error "The $VirtualServerName virtual server does not exist."
        }

        Else {

            Try {
                $response = Invoke-RestMethodOverride -Method DELETE -Uri "$URI" -Credential $F5session.Credential -ContentType 'application/json'
                Write-Output $true
            }
            Catch {
                Write-Error ("Failed to remove the $VirtualServerName virtual server.")
                Write-Error ("StatusCode:" + $_.Exception.Response.StatusCode.value__)
                Write-Error ("StatusDescription:" + $_.Exception.Response.StatusDescription)            
            }
        }
    }

}