Private/ConvertTo-IACNormalizedAssignment.ps1
|
function ConvertTo-IACNormalizedAssignment { [CmdletBinding()] param( [Parameter(Mandatory)] [object]$Assignment, [string[]]$GroupIds = @() ) if (-not $Assignment.target -or -not $Assignment.target.'@odata.type') { return } $odataType = "$($Assignment.target.'@odata.type')" $targetGroupId = if ($odataType -in @( '#microsoft.graph.groupAssignmentTarget', '#microsoft.graph.exclusionGroupAssignmentTarget' )) { "$($Assignment.target.groupId)" } else { $null } $reason = switch ($odataType) { '#microsoft.graph.groupAssignmentTarget' { if ($GroupIds.Count -eq 0) { 'Group Assignment' } elseif ($GroupIds -contains $targetGroupId) { 'Direct Assignment' } } '#microsoft.graph.exclusionGroupAssignmentTarget' { if ($GroupIds.Count -eq 0) { 'Group Exclusion' } elseif ($GroupIds -contains $targetGroupId) { 'Direct Exclusion' } } '#microsoft.graph.allLicensedUsersAssignmentTarget' { if ($GroupIds.Count -eq 0) { 'All Users' } } '#microsoft.graph.allDevicesAssignmentTarget' { if ($GroupIds.Count -eq 0) { 'All Devices' } } } if (-not $reason) { return } $filterId = $null $filterType = $null $rawFilterId = $Assignment.target.deviceAndAppManagementAssignmentFilterId $rawFilterType = $Assignment.target.deviceAndAppManagementAssignmentFilterType if ($rawFilterType -and $rawFilterType -ne 'none' -and $rawFilterId -and $rawFilterId -ne '00000000-0000-0000-0000-000000000000') { $filterId = "$rawFilterId" $filterType = "$rawFilterType" } [PSCustomObject][ordered]@{ AssignmentId = if ($null -ne $Assignment.id) { "$($Assignment.id)" } else { $null } Reason = $reason AssignmentMode = if ($odataType -eq '#microsoft.graph.exclusionGroupAssignmentTarget') { 'Exclude' } else { 'Include' } TargetType = switch ($odataType) { '#microsoft.graph.allLicensedUsersAssignmentTarget' { 'AllUsers' } '#microsoft.graph.allDevicesAssignmentTarget' { 'AllDevices' } '#microsoft.graph.groupAssignmentTarget' { 'Group' } '#microsoft.graph.exclusionGroupAssignmentTarget' { 'Group' } } TargetId = $targetGroupId GroupId = $targetGroupId Intent = if ($null -ne $Assignment.intent) { "$($Assignment.intent)" } else { $null } Apps = $null FilterId = $filterId FilterType = $filterType } } |