forked from dsccommunity/xPSDesiredStateConfiguration
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathxEnvironment_AddMultiplePathsConfig.ps1
100 lines (85 loc) · 3.36 KB
/
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
<#PSScriptInfo
.VERSION 1.0.1
.GUID dafafad2-d581-4db2-841c-7095c5c3ed30
.AUTHOR Microsoft Corporation
.COMPANYNAME Microsoft Corporation
.COPYRIGHT
.TAGS DSCConfiguration
.LICENSEURI https://github.com/dsccommunity/xPSDesiredStateConfiguration/blob/main/LICENSE
.PROJECTURI https://github.com/dsccommunity/xPSDesiredStateConfiguration
.ICONURI
.EXTERNALMODULEDEPENDENCIES
.REQUIREDSCRIPTS
.EXTERNALSCRIPTDEPENDENCIES
.RELEASENOTES First version.
.PRIVATEDATA 2016-Datacenter,2016-Datacenter-Server-Core
#>
#Requires -module 'xPSDesiredStateConfiguration'
<#
.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
}
}
}