Private/Test-NetscalerGateway.ps1

function Test-NetScalerGateway {
    <#
    
    #>


    [CmdletBinding()]
    Param
    (
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]$NetScalerHostingGateway,
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]$NetScalerUserName,
        [parameter(Mandatory = $true, ValueFromPipeline = $true)][System.Security.SecureString]$NetscalerPassword

    )

    #Create array with results
    $gwresults = @()
    $errors = @()

    # Test the NetScaler Gateway
    $ICAUsers = (((Get-AAAUser $NetScalerHostingGateway $NetScalerUserName $NetScalerPassword "ica").vpnicaconnection) | Measure-Object).count
    $VPNUsers = (((Get-AAAUser $NetScalerHostingGateway $NetScalerUserName $NetScalerPassword "vpn").aaasession) | Measure-Object).count

    # Both of these indicate a problem with the Netscaler Hosting Gateway.
    if (-1 -eq $ICAUsers) {
        Write-Verbose "Could not retrieve ICA Users from Netscaler Gateway $NetscalerHostingGateway"
        $Errors += "Could not retrieve ICA Users from Netscaler Gateway $NetscalerHostingGateway"
    }
    if (-1 -eq $VPNUsers) {
        Write-Verbose "Could not retrieve VPN Users from Netscaler Gateway $NetscalerHostingGateway"
        $Errors += "Could not retrieve VPN Users from Netscaler Gateway $NetscalerHostingGateway"
    }

    if ($Errors.Count -gt 0) {
        $gwresults += [PSCustomObject]@{
            'ICAUsers'          = $ICAUsers
            'VPNUsers'          = $VPNUsers
            'TotalGatewayUsers' = -1 # Manual Override
            'Errors'            = $Errors
        }
    }
    else {
        Write-Verbose "Current NetScaler Gateway ICA Users: $ICAUsers"
        Write-Verbose "Current NetScaler Gateway VPN Users: $VPNUsers"
        $TotalUsers = [int]$ICAUsers + [int]$VPNUsers
        Write-Verbose "Current NetScaler Gateway Users: $TotalUsers"

        $gwresults += [PSCustomObject]@{
            'ICAUsers'          = $ICAUsers
            'VPNUsers'          = $VPNUsers
            'TotalGatewayUsers' = $TotalUsers
        }
    }
    return $gwresults
}