DSCResources/XD7LabApplication/XD7LabApplication.schema.psm1

configuration XD7LabApplication {
     param (
        ## Citrix XenDesktop 7 application name
        [Parameter(Mandatory)]
        [System.String] $Name,

        ## Citrix XenDesktop 7 application executable path
        [Parameter(Mandatory)]
        [System.String] $Path,

        [Parameter()]
        [ValidateSet('Published','Local')]
        [System.String] $Type = 'Published',

        ## Citrix XenDesktop 7 desktop delivery group name
        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [System.String] $DesktopGroupName = 'Default Desktop',

        ## Application executable arguments
        [Parameter()]
        [AllowNull()]
        [System.String] $Arguments,

        ## Working directory of the application executable
        [Parameter()]
        [AllowNull()]
        [System.String] $WorkingDirectory,

        [Parameter()]
        [AllowNull()]
        [System.String] $Description,

        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [System.String] $DisplayName = $Name,

        [Parameter()]
        [ValidateNotNull()]
        [System.Boolean] $Enabled = $true,

        [Parameter()]
        [ValidateNotNull()]
        [System.Boolean] $Visible = $true,

        [Parameter()]
        [ValidateNotNull()]
        [System.Management.Automation.PSCredential]
        [System.Management.Automation.CredentialAttribute()]
        $Credential
    )

    Import-DscResource -ModuleName XenDesktop7;

    $resourceId = '{0}_{1}' -f $DesktopGroupName.Replace(' ','_'), $Name;

    if ($PSBoundParameters.ContainsKey('Credential')) {

        XD7DesktopGroupApplication $resourceId {
            Name = $Name;
            DesktopGroupName = $DesktopGroupName;
            Path = $Path;
            ApplicationType = if ($Type -eq 'Published') { 'HostedOnDesktop' } else { 'InstalledOnClient' };
            Arguments = $Arguments;
            WorkingDirectory = $WorkingDirectory;
            Description = $Description;
            Enabled = $Enabled;
            Visible = $Visible;
            DisplayName = $DisplayName;
            Credential = $Credential;
        }
    }
    else {

        XD7DesktopGroupApplication $resourceId {
            Name = $Name;
            DesktopGroupName = $DesktopGroupName;
            Path = $Path;
            ApplicationType = if ($Type -eq 'Published') { 'HostedOnDesktop' } else { 'InstalledOnClient' };
            Arguments = $Arguments;
            WorkingDirectory = $WorkingDirectory;
            Description = $Description;
            Enabled = $Enabled;
            Visible = $Visible;
            DisplayName = $DisplayName;
        }
    }

} #end configuration XD7LabPublishedApp