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