Get-MsOGroupMembers-Html
MSOnline: HTML report of group members
#Requires -Version 5.1
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true, ParameterSetName = 'Id')]
[guid]$GroupObjectId,
[Parameter(Mandatory = $true, ParameterSetName = 'Name')]
[string]$GroupName,
[Parameter(ParameterSetName = 'Name')]
[Parameter(ParameterSetName = 'Id')]
[switch]$Nested,
[Parameter(ParameterSetName = 'Name')]
[Parameter(ParameterSetName = 'Id')]
[ValidateSet('User','Group','Contact','ServicePrincipal')]
[string[]]$MemberObjectTypes,
[guid]$TenantId
)
Process {
try {
if ($PSCmdlet.ParameterSetName -eq 'Id') { $grp = Get-MsolGroup -ObjectId $GroupObjectId -TenantId $TenantId -ErrorAction Stop }
else { $grp = Get-MsolGroup -SearchString $GroupName -TenantId $TenantId -ErrorAction Stop | Select-Object -First 1 }
$getArgs = @{'ErrorAction' = 'Stop'; 'GroupObjectId' = $grp.ObjectId; 'TenantId' = $TenantId}
if ($MemberObjectTypes) { $getArgs.Add('MemberObjectTypes', $MemberObjectTypes) }
if ($Nested) { $getArgs.Add('All', $true) }
$result = Get-MsolGroupMember @getArgs | Select-Object DisplayName, EmailAddress, ObjectType, UserPrincipalName
if ($null -eq $result -or $result.Count -eq 0) { Write-Output "No group members found"; return }
Write-Output ($result | ConvertTo-Html -Fragment)
}
catch { throw }
}Unique ID of the group
Display name of the group
Off
Show nested members
Filter by member object types
Unique ID of the tenant