Skip to content

Get-MsOGroupMembers

MSOnline: Get group members from Azure AD

#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,
    [Parameter(ParameterSetName = 'Name')]
    [Parameter(ParameterSetName = 'Id')]
    [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 *

        if ($null -eq $result -or $result.Count -eq 0) { Write-Output "No group members found"; return }
        foreach ($item in $result) { $item | Add-Member -NotePropertyName Timestamp -NotePropertyValue (Get-Date -Format 'yyyy-MM-dd HH:mm:ss') -PassThru -Force }
    }
    catch { throw }
}

Unique ID of the group

Display name of the group

Off

Show group members nested recursively

Filter by member object types (User, Group, Contact, ServicePrincipal)

Unique ID of the tenant

An interactive directory of PowerShell scripts.