Private/disconnect-netscaler.ps1

function Disconnect-NetScaler {
    <#
.SYNOPSIS
    Logs out of a Citrix NetScaler.
.DESCRIPTION
    Logs out of a Citrix NetScaler and clears the NSSession Global Variable.
.PARAMETER NSIP
    Citrix NetScaler NSIP.
.NOTES
    Name: Disconnect-NetScaler
    Author: David Brett
    Date Created: 15/03/2017
.CHANGE LOG
    David Brett - 15/03/2017 - Initial Script Creation
#>
 

    [cmdletbinding(
        DefaultParameterSetName = '',
        ConfirmImpact = 'low'
    )]

    Param (
        [Parameter(
            Mandatory = $False,
            Position = 0,
            ParameterSetName = '',
            ValueFromPipeline = $True)]
        [string]$NSIP
    )

    # Validate That the IP Address is valid
    Validate-IP $NSIP

    # Check to see if a valid NSSession is active. If not then quit the function
    if ($NSSession -eq "") {
        Write-Verbose "No valid NetScaler session found, quitting"
        break
    }

    # Set up the JSON Payload to send to the netscaler
    $PayLoad = ConvertTo-JSON @{
        "logout" = @{
        }
    }

    # Logout of the NetScaler
    Invoke-RestMethod -uri "$NSIP/nitro/v1/config/logout" -body $PayLoad -WebSession $NSSession.WebSession -Headers @{"Content-Type" = "application/vnd.com.citrix.netscaler.logout+json"} -Method POST

    # Clear the Global Variable for the NetScaler Session
    Remove-Variable -name nsSession -Scope global -force
    Write-Verbose "NetScaler Session Cleared and Logged Out"
}