Skip to content

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

An interactive directory of PowerShell scripts.