DSCResources/XD7LabApplication/XD7LabApplication.schema.psm1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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