@@ -31,17 +31,17 @@ function Invoke-CIPPStandardConditionalAccessTemplate {
3131 param ($Tenant , $Settings )
3232 # #$Rerun -Type Standard -Tenant $Tenant -Settings $Settings 'ConditionalAccess'
3333 $TestResult = Test-CIPPStandardLicense - StandardName ' ConditionalAccessTemplate' - TenantFilter $Tenant - RequiredCapabilities @ (' AAD_PREMIUM' , ' AAD_PREMIUM_P2' )
34+ $Table = Get-CippTable - tablename ' templates'
3435
3536 if ($TestResult -eq $false ) {
3637 Write-Host " We're exiting as the correct license is not present for this standard."
3738 return $true
3839 } # we're done.
40+ $AllCAPolicies = New-GraphGetRequest - Uri ' https://graph.microsoft.com/beta/identity/conditionalAccess/policies?$top=999' - tenantid $Tenant
3941
4042 if ($Settings.remediate -eq $true ) {
41- $AllCAPolicies = New-GraphGetRequest - Uri ' https://graph.microsoft.com/beta/identity/conditionalAccess/policies?$top=999' - tenantid $Tenant
4243 foreach ($Setting in $Settings ) {
4344 try {
44- $Table = Get-CippTable - tablename ' templates'
4545 $Filter = " PartitionKey eq 'CATemplate' and RowKey eq '$ ( $Setting.TemplateList.value ) '"
4646 $JSONObj = (Get-CippAzDataTableEntity @Table - Filter $Filter ).JSON
4747 $null = New-CIPPCAPolicy - replacePattern ' displayName' - TenantFilter $tenant - state $Setting.state - RawJSON $JSONObj - Overwrite $true - APIName $APIName - Headers $Request.Headers - DisableSD $Setting.DisableSD
@@ -51,20 +51,24 @@ function Invoke-CIPPStandardConditionalAccessTemplate {
5151 }
5252 }
5353 }
54- if ($Settings.report -eq $true ) {
55- $Policies = $Settings.TemplateList.JSON | ConvertFrom-Json - Depth 10
54+ if ($Settings.report -eq $true -or $Settings.remediate -eq $true ) {
55+ $Filter = " PartitionKey eq 'CATemplate'"
56+ $Policies = (Get-CippAzDataTableEntity @Table - Filter $Filter | Where-Object RowKey -In $Settings.TemplateList.value ).JSON | ConvertFrom-Json - Depth 10
5657 # check if all groups.displayName are in the existingGroups, if not $fieldvalue should contain all missing groups, else it should be true.
57- $MissingPolicies = foreach ($policy in $Policies ) {
58- $CheckExististing = $AllCAPolicies | Where-Object - Property displayName -EQ $policy.displayname
58+ $MissingPolicies = foreach ($Setting in $Settings.TemplateList ) {
59+ $policy = $Policies | Where-Object { $_.displayName -eq $Setting.label }
60+ $CheckExististing = $AllCAPolicies | Where-Object - Property displayName -EQ $Setting.label
5961 if (! $CheckExististing ) {
60- $policy.displayname
62+ Set-CIPPStandardsCompareField - FieldName " standards.ConditionalAccessTemplate.$ ( $Setting.value ) " - FieldValue " Policy $ ( $Setting.label ) is missing from this tenant." - Tenant $Tenant
63+ } else {
64+ $CompareObj = ConvertFrom-Json - ErrorAction SilentlyContinue - InputObject (New-CIPPCATemplate - TenantFilter $tenant - JSON $CheckExististing )
65+ $Compare = Compare-CIPPIntuneObject - ReferenceObject $policy - DifferenceObject $CompareObj
66+ if (! $Compare ) {
67+ Set-CIPPStandardsCompareField - FieldName " standards.ConditionalAccessTemplate.$ ( $Setting.value ) " - FieldValue $true - Tenant $Tenant
68+ } else {
69+ Set-CIPPStandardsCompareField - FieldName " standards.ConditionalAccessTemplate.$ ( $Setting.value ) " - FieldValue $Compare - Tenant $Tenant
70+ }
6171 }
6272 }
63- if ($MissingPolicies.Count -eq 0 ) {
64- $fieldValue = $true
65- } else {
66- $fieldValue = $MissingPolicies -join ' , '
67- }
68- Set-CIPPStandardsCompareField - FieldName ' standards.ConditionalAccessTemplate' - FieldValue $fieldValue - Tenant $Tenant
6973 }
7074}
0 commit comments