Skip to content

Commit 4c38523

Browse files
committed
magic to fix microsoft casing issue
apparently some of the setting templates in the catalog have guids in uppercase, when retrieving the policy later, the guid is normalized to lowercase and can not be deployed without fixing the casing
1 parent c849931 commit 4c38523

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

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

0 commit comments

Comments
 (0)