Skip to content

Commit 9ee597c

Browse files
authored
Merge pull request #394 from KelvinTegelaar/dev
[pull] dev from KelvinTegelaar:dev
2 parents 67ca873 + 88d169a commit 9ee597c

File tree

7 files changed

+82
-19
lines changed

7 files changed

+82
-19
lines changed

Modules/CIPPCore/Public/Entrypoints/Activity Triggers/Standards/Push-CIPPDriftManagement.ps1

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ function Push-CippDriftManagement {
1212
try {
1313
$Drift = Get-CIPPDrift -TenantFilter $Item.Tenant
1414
if ($Drift.newDeviationsCount -gt 0) {
15-
$email = (Get-CIPPTenantAlignment -TenantFilter $Item.Tenant | Where-Object -Property standardType -EQ 'drift').standardSettings.email
16-
$webhook = (Get-CIPPTenantAlignment -TenantFilter $Item.Tenant | Where-Object -Property standardType -EQ 'drift').standardSettings.webhook
15+
$Settings = (Get-CIPPTenantAlignment -TenantFilter $Item.Tenant | Where-Object -Property standardType -EQ 'drift')
16+
$email = $Settings.driftAlertEmail
17+
$webhook = $Settings.driftAlertWebhook
1718
$CippConfigTable = Get-CippTable -tablename Config
1819
$CippConfig = Get-CIPPAzDataTableEntity @CippConfigTable -Filter "PartitionKey eq 'InstanceProperties' and RowKey eq 'CIPPURL'"
1920
$CIPPURL = 'https://{0}' -f $CippConfig.Value

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Endpoint/MEM/Invoke-ExecDeviceAction.ps1

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using namespace System.Net
22

3-
Function Invoke-ExecDeviceAction {
3+
function Invoke-ExecDeviceAction {
44
<#
55
.FUNCTIONALITY
66
Entrypoint
@@ -22,6 +22,16 @@ Function Invoke-ExecDeviceAction {
2222
try {
2323
switch ($Action) {
2424
'setDeviceName' {
25+
if ($Request.Body.input -match '%') {
26+
$Device = New-GraphGetRequest -uri "https://graph.microsoft.com/beta/deviceManagement/managedDevices/$DeviceFilter" -tenantid $TenantFilter
27+
$Request.Body.input = Get-CIPPTextReplacement -TenantFilter $TenantFilter -Text $Request.Body.input
28+
$Request.Body.input = $Request.Body.input -replace '%SERIAL%', $Device.serialNumber
29+
# limit to 15 characters
30+
if ($Request.Body.input.Length -gt 15) {
31+
$Request.Body.input = $Request.Body.input.Substring(0, 15)
32+
}
33+
}
34+
2535
$ActionBody = @{ deviceName = $Request.Body.input } | ConvertTo-Json -Compress
2636
break
2737
}
@@ -30,7 +40,7 @@ Function Invoke-ExecDeviceAction {
3040
Write-Host "ActionBody: $ActionBody"
3141
break
3242
}
33-
Default { $ActionBody = $Request.Body | ConvertTo-Json -Compress }
43+
default { $ActionBody = $Request.Body | ConvertTo-Json -Compress }
3444
}
3545

3646
$cmdParams = @{

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Tenant/Standards/Invoke-CIPPStandardsRun.ps1

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ function Invoke-CIPPStandardsRun {
2323

2424
if ($Drift.IsPresent) {
2525
Write-Information 'Drift Standards Run'
26-
$AllTasks = Get-CIPPTenantAlignment | Where-Object -Property standardtype -EQ 'drift' | Select-Object -Property Tenant | Sort-Object -Unique -Property Tenant
26+
$AllTasks = Get-CIPPTenantAlignment | Where-Object -Property standardtype -EQ 'drift' | Select-Object -Property TenantFilter | Sort-Object -Unique -Property TenantFilter
2727

2828
#For each item in our object, run the queue.
2929
$Queue = New-CippQueueEntry -Name 'Drift Standards' -TotalTasks ($AllTasks | Measure-Object).Count
3030

3131
$Batch = foreach ($Task in $AllTasks) {
3232
[PSCustomObject]@{
3333
FunctionName = 'CIPPDriftManagement'
34-
Tenant = $Task.Tenant
34+
Tenant = $Task.TenantFilter
3535
}
3636
}
3737

@@ -70,7 +70,6 @@ function Invoke-CIPPStandardsRun {
7070
StandardParams = @{
7171
TenantFilter = $TenantFilter
7272
runManually = $runManually
73-
Drift = $Drift.IsPresent
7473
}
7574
}
7675
SkipLog = $true

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Tenant/Standards/Invoke-ExecUpdateDriftDeviation.ps1

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function Invoke-ExecUpdateDriftDeviation {
2727
success = $true
2828
result = "All drift customizations removed for tenant $TenantFilter"
2929
})
30-
Write-LogMessage -user $request.headers.'x-ms-client-principal' -API $APINAME -message "Removed all drift customizations for tenant $TenantFilter" -Sev 'Info'
30+
Write-LogMessage -tenant $TenantFilter -user $request.headers.'x-ms-client-principal' -API $APINAME -message "Removed all drift customizations for tenant $TenantFilter" -Sev 'Info'
3131
} else {
3232
$Deviations = $Request.Body.deviations
3333
$Reason = $Request.Body.reason
@@ -40,18 +40,36 @@ function Invoke-ExecUpdateDriftDeviation {
4040
success = $true
4141
result = $Result
4242
}
43-
Write-LogMessage -user $request.headers.'x-ms-client-principal' -API $APINAME -message "Updated drift deviation status for $($Deviation.standardName) to $($Deviation.status) with reason: $Reason" -Sev 'Info'
43+
Write-LogMessage -tenant $TenantFilter -user $request.headers.'x-ms-client-principal' -API $APINAME -message "Updated drift deviation status for $($Deviation.standardName) to $($Deviation.status) with reason: $Reason" -Sev 'Info'
4444
if ($Deviation.status -eq 'DeniedRemediate') {
4545
$Setting = $Deviation.standardName -replace 'standards.', ''
4646
$StandardTemplate = Get-CIPPTenantAlignment -TenantFilter $TenantFilter | Where-Object -Property standardType -EQ 'drift'
47-
$StandardTemplate = $StandardTemplate.$Setting
48-
$StandardTemplate.action = @(
49-
@{label = 'Report'; value = 'Report' },
50-
@{ label = 'Remediate'; value = 'Remediate' }
51-
)
52-
#idea here is to make a system job that triggers the remediation process, so that users can click on "Deniedremediate"
53-
#That job then launches a single standard run, it gets the same input as an orch, but is just a scheduled job.
47+
$StandardTemplate = $StandardTemplate.standardSettings.$Setting
5448

49+
$StandardTemplate.standards.$Setting | Add-Member -MemberType NoteProperty -Name 'remediate' -Value $true -Force
50+
$StandardTemplate.standards.$Setting | Add-Member -MemberType NoteProperty -Name 'report' -Value $true -Force
51+
52+
$TaskBody = @{
53+
TenantFilter = $TenantFilter
54+
Name = "One Off Drift Remediation: $Setting - $TenantFilter"
55+
Command = @{
56+
value = "Invoke-CIPPStandard$Setting"
57+
label = "Invoke-CIPPStandard$Setting"
58+
}
59+
60+
Parameters = [pscustomobject]@{
61+
Tenant = $TenantFilter
62+
Settings = $StandardTemplate.standards.$Setting
63+
}
64+
ScheduledTime = '0'
65+
PostExecution = @{
66+
Webhook = $false
67+
Email = $false
68+
PSA = $false
69+
}
70+
}
71+
Add-CIPPScheduledTask -Task $TaskBody -hidden $false
72+
Write-LogMessage -tenant $TenantFilter -user $request.headers.'x-ms-client-principal' -API $APINAME -message "Scheduled drift remediation task for $Setting" -Sev 'Info'
5573
}
5674
if ($Deviation.status -eq 'deniedDelete') {
5775
#Here we look at the policy ID received and the type, and nuke it.
@@ -62,7 +80,7 @@ function Invoke-ExecUpdateDriftDeviation {
6280
success = $false
6381
error = $_.Exception.Message
6482
}
65-
Write-LogMessage -user $request.headers.'x-ms-client-principal' -API $APINAME -message "Failed to update drift deviation for $($Deviation.standardName): $($_.Exception.Message)" -Sev 'Error'
83+
Write-LogMessage -tenant $TenantFilter -user $request.headers.'x-ms-client-principal' -API $APINAME -message "Failed to update drift deviation for $($Deviation.standardName): $($_.Exception.Message)" -Sev 'Error'
6684
}
6785
}
6886
}

Modules/CIPPCore/Public/Functions/Get-CIPPTenantAlignment.ps1

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,8 @@ function Get-CIPPTenantAlignment {
259259
StandardId = $Template.GUID
260260
standardType = $Template.type
261261
standardSettings = $Template.Standards
262+
driftAlertEmail = $Template.driftAlertEmail
263+
driftAlertWebhook = $Template.driftAlertWebhook
262264
AlignmentScore = $AlignmentPercentage
263265
LicenseMissingPercentage = $LicenseMissingPercentage
264266
CombinedScore = $AlignmentPercentage + $LicenseMissingPercentage

Modules/CIPPCore/Public/Set-CIPPIntunePolicy.ps1

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,40 @@ function Set-CIPPIntunePolicy {
109109
$PlatformType = 'deviceManagement'
110110
$TemplateTypeURL = 'configurationPolicies'
111111
$DisplayName = ($RawJSON | ConvertFrom-Json).Name
112+
113+
$Template = $RawJSON | ConvertFrom-Json
114+
if ($Template.templateReference.templateId) {
115+
Write-Information "Checking configuration policy template $($Template.templateReference.templateId) for $($DisplayName)"
116+
# Remove unavailable settings from the template
117+
$AvailableSettings = New-GraphGETRequest -uri "https://graph.microsoft.com/beta/deviceManagement/configurationPolicyTemplates('$($Template.templateReference.templateId)')/settingTemplates?`$expand=settingDefinitions&`$top=1000" -tenantid $tenantFilter
118+
119+
if ($AvailableSettings) {
120+
Write-Information "Available settings for template $($Template.templateReference.templateId): $($AvailableSettings.Count)"
121+
$FilteredSettings = [system.collections.generic.list[psobject]]::new()
122+
foreach ($setting in $Template.settings) {
123+
if ($setting.settingInstance.settingInstanceTemplateReference.settingInstanceTemplateId -in $AvailableSettings.settingInstanceTemplate.settingInstanceTemplateId) {
124+
$AvailableSetting = $AvailableSettings | Where-Object { $_.settingInstanceTemplate.settingInstanceTemplateId -eq $setting.settingInstance.settingInstanceTemplateReference.settingInstanceTemplateId }
125+
126+
if ($AvailableSetting.settingInstanceTemplate.settingInstanceTemplateId -cnotmatch $setting.settingInstance.settingInstanceTemplateReference.settingInstanceTemplateId) {
127+
# update casing
128+
Write-Information "Fixing casing for setting instance template $($AvailableSetting.settingInstanceTemplate.settingInstanceTemplateId)"
129+
$setting.settingInstance.settingInstanceTemplateReference.settingInstanceTemplateId = $AvailableSetting.settingInstanceTemplate.settingInstanceTemplateId
130+
}
131+
132+
if ($AvailableSetting.settingInstanceTemplate.choiceSettingValueTemplate -cnotmatch $setting.settingInstance.choiceSettingValue.settingValueTemplateReference.settingValueTemplateId) {
133+
# update choice setting value template
134+
Write-Information "Fixing casing for choice setting value template $($AvailableSetting.settingInstanceTemplate.choiceSettingValueTemplate.settingValueTemplateId)"
135+
$setting.settingInstance.choiceSettingValue.settingValueTemplateReference.settingValueTemplateId = $AvailableSetting.settingInstanceTemplate.choiceSettingValueTemplate.settingValueTemplateId
136+
}
137+
138+
$FilteredSettings.Add($setting)
139+
}
140+
}
141+
$Template.settings = $FilteredSettings
142+
$RawJSON = $Template | ConvertTo-Json -Depth 100 -Compress
143+
}
144+
}
145+
112146
$CheckExististing = New-GraphGETRequest -uri "https://graph.microsoft.com/beta/$PlatformType/$TemplateTypeURL" -tenantid $tenantFilter
113147
if ($DisplayName -in $CheckExististing.name) {
114148
$PolicyFile = $RawJSON | ConvertFrom-Json | Select-Object * -ExcludeProperty Platform, PolicyType, CreationSource

Modules/CIPPCore/Public/Standards/Invoke-CIPPStandardCustomBannedPasswordList.ps1

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,8 @@ function Invoke-CIPPStandardCustomBannedPasswordList {
3131
#>
3232

3333
param($Tenant, $Settings)
34-
34+
Write-Host "All params received: $Tenant, $tenant, $($Settings | ConvertTo-Json -Depth 10 -Compress)"
3535
$PasswordRuleTemplateId = '5cf42378-d67d-4f36-ba46-e8b86229381d'
36-
3736
# Parse and validate banned words from input
3837
$BannedWordsInput = $Settings.BannedWords
3938
if ([string]::IsNullOrWhiteSpace($BannedWordsInput)) {

0 commit comments

Comments
 (0)