Home > Back-end >  how to list users and the groups they are part of in office 365 powershell
how to list users and the groups they are part of in office 365 powershell

Time:01-02

i need a script please to export users in office 365 and the groups they are part of and not the other way around. can anyone help please. all answers i found were to export distribution groups and their members.

i tried using the below but i dont know how to select group names.

get-mailbox | ? {$_.PrimarySMTPAddress -like "*domain.com"} | Select DisplayName,Alias,PrimarySMTPAddress'

and i tried this too

get-mailbox | ? {$_.PrimarySMTPAddress -like "*domain.com"} | Sort Name | % { $MbxDirData = $_ ; Get-MailboxStatistics $_ } | Select DisplayName, @{E={ $MbxDirData.Alias };L='Alias'}, @{E={ $MbxDirData.PrimarySMTPAddress };L='PrimarySMTPAddress'}, @{E={ $_.TotalItemSize.Value $_.TotalDeletedItemSize.Value };L="TotalMailboxSize"}

any help is appreciated.

CodePudding user response:

We can list all the office 365 groups by using the PowerShell cmdlet enter image description here

Note: Get-UnifiedGroup cmdlet is available only in the cloud-based service.

For more Information you refer this blog post & also if you faces any issues while executing Get-unifiedGroup cmdlet you refer this .

CodePudding user response:

This is untested, but I think you can use cmdlets Get-User and then Get-Group to retrieve the groups a user is a member of like this:

Get-Mailbox | Where-Object {$_.PrimarySMTPAddress -like "*domain.com"} | ForEach-Object {
    $user   = Get-User -Identity $_.DistinguishedName                      
    $groups = Get-Group | Where-Object {$_.Members -contains $User}
    $_ | Select-Object DisplayName, Alias, PrimarySMTPAddress,
                       @{Name = 'Groups' ; Expression = {$groups.Name -join '; '}}
} | Export-Csv -Path 'X:\O365UserGroups.csv' -NoTypeInformation

The above concatenates the groups with a semi-colon in one single field of the CSV, but if you would rather have output where there is one line for each group, you can do:

Get-Mailbox | Where-Object {$_.PrimarySMTPAddress -like "*domain.com"} | ForEach-Object {
    $user   = Get-User -Identity $_.DistinguishedName                      
    $groups = Get-Group | Where-Object {$_.Members -contains $User}
    # output a data row for each group in the collection
    foreach ($group in $groups) {
        $_ | Select-Object DisplayName, Alias, PrimarySMTPAddress,
                       @{Name = 'Groups' ; Expression = {$group.Name}}
    }
} | Export-Csv -Path 'X:\O365UserGroups.csv' -NoTypeInformation
  • Related