functions/user/Compare-PSEntraIDUserList.ps1
|
function Compare-PSEntraIDUserList { <# .SYNOPSIS Compare two list user of user. .DESCRIPTION Compare two list user of user. .PARAMETER ReferenceIdentity Reference list of users .PARAMETER DifferenceIdentity Difference list of users .EXAMPLE PS C:\> Compare-PSEntraIDUserList -ReferenceIdentity $UserList1 -DifferenceIdentity $UserList2 Remove member to Azure AD group group1 #> [OutputType([System.Collections.ArrayList])] [CmdletBinding(DefaultParameterSetName = 'UserIdentity')] param( [Parameter(Mandatory = $true, ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $false, ParameterSetName = 'UserIdentity')] [ValidateUserIdentity()] [string[]] $ReferenceIdentity, [Parameter(Mandatory = $true, ValueFromPipeline = $false, ValueFromPipelineByPropertyName = $false, ParameterSetName = 'UserIdentity')] [ValidateUserIdentity()] [string[]] $DifferenceIdentity ) begin { Assert-EntraConnection -Service 'graph' -Cmdlet $PSCmdlet [System.Collections.ArrayList] $changeUserList = [System.Collections.ArrayList]::New() } process { [System.Object[]] $compareUserList = Compare-Object -ReferenceObject $ReferenceIdentity -DifferenceObject $DifferenceIdentity -IncludeEqual foreach ($compareUser in $compareUserList) { switch ($compareUser.SideIndicator) { '=>' { [pscustomobject] $changeUser = [pscustomobject]@{ Crud = 'Delete' Identity = $compareUser.InputObject } [void] ($changeUserList.Add($changeUser)) } '<=' { [pscustomobject] $changeUser = [pscustomobject]@{ Crud = 'Create' Identity = $compareUser.InputObject } [void]($changeUserList.Add($changeUser)) } } } $changeUserList } end {} } |