Private/Add-ADCService.ps1

function Add-ADCService {
    <#
.SYNOPSIS
    Adds a Load Balancing Service to the Citrix ADC.
.DESCRIPTION
    Adds a Load Balancing Service to the Citrix ADC.
.PARAMETER Session
    The Citrix ADC Session to execute the function against.
.PARAMETER ServiceName
    The Service Name.
.PARAMETER ServiceType
    The Service Type.
.PARAMETER ServicePort
    The Service Port to use.
.PARAMETER ServerName
    The Server to point the Service to.
.NOTES
    Creation Date: 20/06/2018
.CHANGE CONTROL
    Name Version Date Change Detail
    David Brett 1.0 29/03/2018 Function Creation
.EXAMPLE
    Add-ADCService -ServiceName "svc_citrix_storefront_443" -ServiceType "SSL" -ServicePort 443 -ServerName "web01.bretty.me.uk" -Verbose
#>


    [CmdletBinding()]
    Param (
        $Session = $script:session,
        [parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName)]
        [string[]]$ServiceName = (Read-Host -Prompt 'Enter Service Name'),
        [string[]]$ServiceType = (Read-Host -Prompt 'Enter Service Type'),
        [int[]]$ServicePort = (Read-Host -Prompt 'Enter Service Port'),
        [string[]]$ServerName = (Read-Host -Prompt 'Enter Server Name')
    )

    begin {
        $PayLoad = @{
            name        = "$ServiceName"
            servicetype = "$ServiceType"
            port        = "$ServicePort"
            servername  = "$ServerName"
        }
    }

    process {
        try {
            Invoke-ADCRestAPI -Session $Session -Method POST -Type "service" -Payload $PayLoad -Action Add
            write-verbose "Load Balancing Service ($ServiceName) added to the Citrix ADC of type ($ServiceType) on Port ($ServicePort) pointing to ($ServerName)"
        }
        catch {
            write-verbose "Load Balancing Service ($ServiceName) could not be added to the Citrix ADC of type ($ServiceType) on Port ($ServicePort) pointing to ($ServerName)" 
        }
    }

    end {
    }
    
}