diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c0c30228c..65f9d6bbc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ * AADConditionalAccessPolicy * Changed the InsiderRiskTypes property to a string array. +* AADServicePrincipal + * Fixes comparison of assigned roles for null values. + FIXES [#5717](https://github.com/microsoft/Microsoft365DSC/issues/5717) * MISC * Changed the CIMInstance logic of various resources to us common logic. * Added support for specifying a proxy in Update-M365DSCModule. diff --git a/Modules/Microsoft365DSC/DSCResources/MSFT_AADServicePrincipal/MSFT_AADServicePrincipal.psm1 b/Modules/Microsoft365DSC/DSCResources/MSFT_AADServicePrincipal/MSFT_AADServicePrincipal.psm1 index e4d0baf0a7..56b00a3eee 100644 --- a/Modules/Microsoft365DSC/DSCResources/MSFT_AADServicePrincipal/MSFT_AADServicePrincipal.psm1 +++ b/Modules/Microsoft365DSC/DSCResources/MSFT_AADServicePrincipal/MSFT_AADServicePrincipal.psm1 @@ -609,6 +609,15 @@ function Set-TargetResource [Array]$currentPrincipals = $currentAADServicePrincipal.AppRoleAssignedTo.Identity [Array]$desiredPrincipals = $AppRoleAssignedTo.Identity + if ($null -eq $currentPrincipals) + { + $currentPrincipals = @() + } + if ($null -eq $desiredPrincipals) + { + $desiredPrincipals = @() + } + [Array]$differences = Compare-Object -ReferenceObject $currentPrincipals -DifferenceObject $desiredPrincipals [Array]$membersToAdd = $differences | Where-Object -FilterScript { $_.SideIndicator -eq '=>' } [Array]$membersToRemove = $differences | Where-Object -FilterScript { $_.SideIndicator -eq '<=' }