internal/functions/Resolve-SPGraphUserGroupMembership.ps1
function Resolve-SPGraphUserGroupMembership { <# .SYNOPSIS Resolves all user group memberships. .DESCRIPTION Resolves all user group memberships. .PARAMETER Identity UPN or ID of the user to resovle the group memebrships for. .PARAMETER Data Add groups to the hashtable specified. If this parameter is not specified, it will instead return them as objects. .PARAMETER LogLevel How detailed a log should be written. .EXAMPLE PS C:\> Resolve-SPGraphUserGroupMembership -Identity fred@contoso.onmicrosoft.com Resolves the group memberships for the user fred@contoso.onmicrosoft.com #> [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string] $Identity, [Hashtable] $Data = @{ }, [LogLevel] $LogLevel = 'Medium' ) begin { $returnData = $PSBoundParameters.Keys -notcontains 'Data' } process { foreach ($membership in Invoke-EntraRequest -Path "users/$Identity/transitiveMemberOf") { if ($LogLevel -gt 0) { Write-PSFMessage -Message 'User {0} is in group {1} ({2})' -StringValues $Identity, $membership.DisplayName, $membership.ID } $Data[$membership.id] = [PSCustomObject]$membership } if ($returnData) { $Data.Values } } } |