forked from dsccommunity/xPSDesiredStateConfiguration
-
Notifications
You must be signed in to change notification settings - Fork 0
/
xPackage_InstallExeUsingCredentialsAndRegistryConfig.ps1
154 lines (129 loc) · 5 KB
/
xPackage_InstallExeUsingCredentialsAndRegistryConfig.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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<#PSScriptInfo
.VERSION 1.0.1
.GUID 98e37dfd-cefb-4de6-8485-2ed8e5ca8959
.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 installs an .exe using credentials, and uses another
set of credentials to access the installer. Also uses custom registry
data to discover the package.
.DESCRIPTION
Configuration that installs an .exe using credentials, and uses another
set of credentials to access the installer. Also uses custom registry
data to discover the package.
.PARAMETER PackageName
The name of the package to install.
.PARAMETER Path
The path to the executable to install.
.PARAMETER Arguments
The command line arguments passed on the installation command line.
When installing MSI packages, the `/quiet` and `/norestart` arguments
are automatically applied.
.PARAMETER ProductId
The product identification number of the package (usually a GUID).
This parameter accepts an empty System.String.
.PARAMETER InstalledCheckRegKey
That path in the registry where the value should be created.
.PARAMETER InstalledCheckRegValueName
The name of the registry value to create.
.PARAMETER InstalledCheckRegValueData
The data that should be set to the registry value.
.PARAMETER Credential
The credential to access the executable in the parameter Path.
.PARAMETER RunAsCredential
The credentials used to install the package on the target node.
.NOTES
The reg key and value is created by xPackage.
.EXAMPLE
$configurationParameters = @{
PackageName = 'Package Name'
Path = '\\software\installer.exe'
InstalledCheckRegKey = 'SOFTWARE\Microsoft\DevDiv\winexpress\Servicing\12.0\coremsi'
InstalledCheckRegValueName = 'Install'
InstalledCheckRegValueData = '1'
CreateCheckRegValue = $true
Credential = (Get-Credential)
RunAsCredential = (Get-Credential)
Arguments = '/q'
ProductId = ''
}
xPackage_InstallExeUsingCredentialsAndRegistryConfig @configurationParameters
Compiles a configuration that installs a package named 'Package Name'
located in the path '\\software\installer.exe', using the arguments '/q',
The executable is accessed using the credentials in parameter Credentials,
and installed using the credential in RunAsCredential parameter.
Also uses custom registry data to discover the package.
#>
Configuration xPackage_InstallExeUsingCredentialsAndRegistryConfig
{
param
(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.String]
$PackageName,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.String]
$Path,
[Parameter(Mandatory = $true)]
[ValidateNotNull()]
[System.String]
$ProductId,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.String]
$InstalledCheckRegKey,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.String]
$InstalledCheckRegValueName,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.String]
$InstalledCheckRegValueData,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$Credential,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.PSCredential]
$RunAsCredential,
[Parameter(Mandatory = $true)]
[ValidateNotNull()]
[System.String]
$Arguments
)
Import-DscResource -ModuleName xPSDesiredStateConfiguration
Node localhost
{
xPackage 'InstallExe'
{
Ensure = 'Present'
Name = $PackageName
Path = $Path
Arguments = $Arguments
RunAsCredential = $RunAsCredential
Credential = $Credential
ProductId = $ProductId
CreateCheckRegValue = $true
InstalledCheckRegKey = $InstalledCheckRegKey
InstalledCheckRegValueName = $InstalledCheckRegValueName
InstalledCheckRegValueData = $InstalledCheckRegValueData
}
}
}