Rules/INT-003.no-unassigned-profiles.psd1
|
@{ Id = 'INT-003' Title = 'No orphaned configuration profiles without assignments' Area = 'IntuneConfiguration' Severity = 'Low' References = @( 'https://learn.microsoft.com/intune/intune-service/configuration/device-profiles' ) Rationale = 'Unassigned profiles do nothing but suggest coverage that does not exist - and they rot silently until someone assigns them by accident.' Remediation = 'Assign the flagged profiles to the intended groups or delete them.' Test = { param($Snapshot) $configurationData = $Snapshot.IntuneConfiguration $unassigned = @() foreach ($configurationProfile in @($configurationData.deviceConfigurations)) { if (@($configurationProfile.assignments).Count -eq 0) { $unassigned += [string]$configurationProfile.displayName } } foreach ($policy in @($configurationData.settingsCatalogPolicies)) { if (@($policy.assignments).Count -eq 0) { $label = $(if ($policy.PSObject.Properties['name'] -and $policy.name) { [string]$policy.name } else { [string]$policy.id }) $unassigned += "$label (settings catalog)" } } if ($unassigned.Count -gt 0) { New-TLRuleResult -Status Fail -Evidence $unassigned } else { $total = @($configurationData.deviceConfigurations).Count + @($configurationData.settingsCatalogPolicies).Count New-TLRuleResult -Status Pass -Evidence ("All {0} configuration profiles are assigned." -f $total) } } } |