Examples/xEnvironment_AddMultiplePathsConfig.ps1

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
91
92
93
94
95
96
97
98
99
100
101
<#PSScriptInfo
.VERSION 1.0.1
.GUID dafafad2-d581-4db2-841c-7095c5c3ed30
.AUTHOR Microsoft Corporation
.COMPANYNAME Microsoft Corporation
.COPYRIGHT
.TAGS DSCConfiguration
.LICENSEURI https://github.com/PowerShell/xPSDesiredStateConfiguration/blob/master/LICENSE
.PROJECTURI https://github.com/PowerShell/xPSDesiredStateConfiguration
.ICONURI
.EXTERNALMODULEDEPENDENCIES
.REQUIREDSCRIPTS
.EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES First version.
.PRIVATEDATA 2016-Datacenter,2016-Datacenter-Server-Core
#>


#Requires -module @{ModuleName = 'xPSDesiredStateConfiguration';ModuleVersion = '8.2.0.0'}

<#
    .SYNOPSIS
        Configuration that creates or modifies an environment variable containing
        paths.
 
    .DESCRIPTION
        Configuration that creates or modifies an environment variable containing
        paths.
        If the environment variable does not exist, the environment variable is
        created, and the paths will added as values.
        If the environment variable already exist, an either of the new path
        values do not exist in the environment variable, they will be appended
        without modifying any preexisting values. If either of the paths already
        exist as a value in in the environment variable, that path will be
        skipped (it is not added twice).
 
    .PARAMETER Name
        The name of the environment variable to create or modify.
 
    .PARAMETER Value
        The paths to add to the environment variable as a comma-separated list,
        e.g. 'C:\test123;C:\test456;C:\test789'.
 
    .PARAMETER Target
        The scope to set the environment variable. Can be set to either the
        'Machine', the 'Process' or both. Default value is 'Machine'.
        { Process | Machine }
 
    .EXAMPLE
        xEnvironment_AddMultiplePathsConfig -Name 'TestPath' -Value 'C:\test123;C:\test456;C:\test789' -Target @('Process', 'Machine')
 
        Compiles a configuration that creates the environment variable
        'TestPath' with the paths 'C:\test123', 'C:\test456' and 'C:\test789'
        in both the scopes 'Machine' and 'Process'.
 
    .EXAMPLE
        $configurationParameters = @{
            Name = 'TestPath'
            Value = 'C:\test123;C:\test456;C:\test789'
            Target = @('Process', 'Machine')
        }
        Start-AzureRmAutomationDscCompilationJob -ResourceGroupName '<resource-group>' -AutomationAccountName '<automation-account>' -ConfigurationName 'xEnvironment_AddMultiplePathsConfig' -Parameters $configurationParameters
 
        Compiles a configuration in Azure Automation that creates the environment
        variable 'TestPath' with the paths 'C:\test123', 'C:\test456'
        and 'C:\test789' in both the scopes 'Machine' and 'Process'.
 
        Replace the <resource-group> and <automation-account> with correct values.
#>

Configuration xEnvironment_AddMultiplePathsConfig
{
    param
    (
        [Parameter(Mandatory = $true)]
        [System.String]
        $Name,

        [Parameter(Mandatory = $true)]
        [System.String]
        $Value,

        [Parameter()]
        [ValidateSet('Process', 'Machine')]
        [System.String[]]
        $Target = 'Machine'
    )

    Import-DscResource -ModuleName 'xPSDesiredStateConfiguration'

    Node localhost
    {
        xEnvironment 'AddMultiplePaths'
        {
            Name   = $Name
            Value  = $Value
            Ensure = 'Present'
            Path   = $true
            Target = $Target
        }
    }
}