Script for listing all groups with owners and members in Office 365.
Added count of groups left to process to see progress when running scripts in large environments.
Run either:
Get-UnifiedGroup | Get-Member
or
Get-UnifiedGroupLinks | Get-Member
to see what other properties you get add to the report.
The script creates one CSV file for information about all members/owners in each group and a CSV file for group names with number of owners, members and external members.
Read more:
Get-UnifiedGroup
Get-UnifiedGroupLinks
#Create $Info array. $Info = @() #Create $GroupInfo array. $GroupInfo = @() #Collects all groups and specified properties $Groups = Get-UnifiedGroup | Select-Object Alias,Accesstype,ManagedBy,PrimarySmtpAddress,Displayname,Notes,GroupMemberCount,GroupExternalMemberCount,WhenChanged #Counts number of groups. $GroupsCount = ($Groups).count #Creates a input to $Info for evry owner and member of each group. #First inputs evry owner of the group, then evry member of the group. #Creates a input to $GroupInfo for each group. foreach($Group in $Groups) { Write-Host -Object "Number of Groups left to process $GroupsCount" -ForegroundColor Green $Members = Get-UnifiedGroupLinks -Identity $Group.alias -LinkType members $Owners = Get-UnifiedGroupLinks -Identity $Group.alias -LinkType owners $OwnerCount = $Group.ManagedBy $Object=[PSCustomObject]@{ Group = $Group.Displayname NumberOfOwners = $OwnerCount.count NumberOfMembers = $Group.GroupMemberCount NumberOfExternalMembers = $Group.ExternalMemberCount } $GroupInfo+=$Object foreach($Owner in $Owners){ $Object=[PSCustomObject]@{ Name = $Group.Displayname Group = $Group.Alias Email = $Group.PrimarySmtpAddress UserName = $Owner.name NumberOfMembers = $Group.GroupMemberCount MemberOrOwner = 'Owner' NumberOfOwners = $OwnerCount.count GroupType = $Group.AccessType ExternalMemberCount = $Group.GroupExternalMemberCount WhenChanged = $Group.WhenChanged Description = $Group.Notes }#EndPSCustomObject $Info+=$object } foreach($Member in $Members){ $Object=[PSCustomObject]@{ Name = $Group.Displayname Group = $Group.Alias Email = $Group.PrimarySmtpAddress UserName = $Member.name NumberOfMembers = $Group.GroupMemberCount MemberOrOwner = 'Member' NumberOfOwners = $OwnerCount.count GroupType = $Group.AccessType ExternalMemberCount = $Group.GroupExternalMemberCount WhenChanged = $Group.WhenChanged Description = $Group.Notes }#EndPSCustomObject $Info+=$object } $GroupsCount-- } $Info | Export-Csv c:\script\Info.csv -Encoding utf8 -NoTypeInformation -NoClobber $GroupInfo | Export-Csv c:\script\GroupInfo.csv -Encoding utf8 -NoTypeInformation -NoClobber
[…] https://alexholmeset.blog/2017/08/24/office-365-groups-reporting/ […]
LikeLike
Finally a decent script to export owners and members per line!
LikeLike