-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNew-WEMConfiguration.ps1
127 lines (99 loc) · 6.84 KB
/
New-WEMConfiguration.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
<#
.Synopsis
Create a new Configuration object in the WEM Database.
.Description
Create a new Configuration object in the WEM Database.
.Link
https://msfreaks.wordpress.com
.Parameter Name
..
.Parameter Description
..
.Parameter Connection
..
.Example
.Notes
Author: Arjan Mensch
#>
function New-WEMConfiguration {
[CmdletBinding()]
param(
[Parameter(Mandatory=$True,ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True)]
[string]$Name,
[Parameter(Mandatory=$False)][AllowEmptyString()]
[string]$Description,
[Parameter(Mandatory=$True)]
[System.Data.SqlClient.SqlConnection]$Connection
)
process {
Write-Verbose "Working with database version $($script:databaseVersion)"
# escape possible query breakers
$Name = ConvertTo-StringEscaped $Name
$Description = ConvertTo-StringEscaped $Description
# check if there's already a configuration with that name
$SQLQuery = "SELECT COUNT(*) AS ObjectCount FROM VUEMSites WHERE Name LIKE '$($Name)'"
$result = Invoke-SQL -Connection $Connection -Query $SQLQuery
if ($result.Tables.Rows.ObjectCount) {
# name must be unique
Write-Error "There's already a Configuration object named '$($Name)'"
Break
}
Write-Verbose "Name is unique: Continue"
# build and execute Insert query
$SQLQuery = "INSERT INTO VUEMSites ({0}) VALUES ({1})" -f $configurationSettings[$script:databaseSchema].SiteFields, ($configurationSettings[$script:databaseSchema].SiteValues -f $Name, $Description)
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# grab the ID from the newly created record
$objectSite = Get-WEMConfiguration -Connection $Connection -Name "$($Name)"
$IdSite = $objectSite.IdSite
# fill other tables with defaults after adding the Site record
# VUEMParameters
$SQLQuery = ("INSERT INTO VUEMParameters ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].ParametersFields, ($configurationSettings[$script:databaseSchema].ParametersValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# VUEMAgentSettings
$SQLQuery = ("INSERT INTO VUEMAgentSettings ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].AgentSettingsFields, ($configurationSettings[$script:databaseSchema].AgentSettingsValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# VUEMSystemUtilities
$SQLQuery = ("INSERT INTO VUEMSystemUtilities ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].SystemUtilitiesFields, ($configurationSettings[$script:databaseSchema].SystemUtilitiesValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# VUEMEnvironmentalSettings
$SQLQuery = ("INSERT INTO VUEMEnvironmentalSettings ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].EnvironmentalFields, ($configurationSettings[$script:databaseSchema].EnvironmentalValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# VUEMUPMSettings
$SQLQuery = ("INSERT INTO VUEMUPMSettings ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].UPMFields, ($configurationSettings[$script:databaseSchema].UPMValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# VUEMPersonaSettings
$SQLQuery = ("INSERT INTO VUEMPersonaSettings ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].PersonaFields, ($configurationSettings[$script:databaseSchema].PersonaValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# VUEMUSVSettings
$SQLQuery = ("INSERT INTO VUEMUSVSettings ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].USVFields, ($configurationSettings[$script:databaseSchema].USVValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# VUEMKioskSettings
$SQLQuery = ("INSERT INTO VUEMKioskSettings ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].KioskFields, ($configurationSettings[$script:databaseSchema].KioskValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# VUEMSystemMonitoringSettings
$SQLQuery = ("INSERT INTO VUEMSystemMonitoringSettings ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].SystemMonitoringFields, ($configurationSettings[$script:databaseSchema].SystemMonitoringValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# AppLockerSettings
if ($configurationSettings[$script:databaseSchema].AppLockerFields) {
$SQLQuery = ("INSERT INTO AppLockerSettings ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].AppLockerFields, ($configurationSettings[$script:databaseSchema].AppLockerValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
}
# GroupPolicyGlobalSettings
if ($configurationSettings[$script:databaseSchema].GroupPolicyGlobalSettingsFields) {
$SQLQuery = ("INSERT INTO GroupPolicyGlobalSettings ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].GroupPolicyGlobalSettingsFields, ($configurationSettings[$script:databaseSchema].GroupPolicyGlobalSettingsValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
}
# CitrixOptimizerConfigurations
if ($configurationSettings[$script:databaseSchema].CitrixOptimizerConfigurationsFields) {
$SQLQuery = ("INSERT INTO VUEMCitrixOptimizerConfigurations ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].CitrixOptimizerConfigurationsFields, ($configurationSettings[$script:databaseSchema].CitrixOptimizerConfigurationsValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
}
# VUEMItems
$SQLQuery = ("INSERT INTO VUEMItems ({0}) VALUES {1}" -f $configurationSettings[$script:databaseSchema].ItemsFields, ($configurationSettings[$script:databaseSchema].ItemsValues -join ", ")) -f $IdSite
$null = Invoke-SQL -Connection $Connection -Query $SQLQuery
# Updating the ChangeLog
New-ChangesLogEntry -Connection $Connection -IdSite -1 -IdElement $IdSite -ChangeType "Create" -ObjectName $Name -ObjectType "Global\Site" -NewValue "N/A" -ChangeDescription $null -Reserved01 $null
# Return the new object
Get-WEMConfiguration -Connection $Connection -IdSite $IdSite
}
}