You can run the PowerShell script in SharePoint Online Management Shell to get a CSV report for SharePoint site collection groups and members. Please change the relevant information for your own environment.
Function Get-SiteGroup-Members
{
param ($sSiteUrl,$sUserName,$sPassword,$FileName)
try
{
#SPO Client Object Model Context
$spoCtx = New-Object Microsoft.SharePoint.Client.ClientContext($sSiteUrl)
$spoCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($sUserName, $sPassword)
#$spoCredentials = New-Object System.Net.NetworkCredential($sUserName, $sPassword) # for on premise
$spoCtx.Credentials = $spoCredentials
$web = $spoCtx.Web
$spGroups =$web.SiteGroups
$spoCtx.Load($web)
$spoCtx.Load($spGroups)
$spoCtx.ExecuteQuery()
Write-Host "Groups Count= $($spGroups.Count)"
foreach($spGroup in $spGroups)
{
$site =@()
$users = $spGroup.Users
$spoCtx.Load($spGroup)
$spoCtx.Load($users)
$spoCtx.ExecuteQuery()
foreach($spUser in $users)
{
try
{
$spoCtx.Load($spUser)
$spoCtx.ExecuteQuery()
$site += New-Object -TypeName PSObject -Property @{
SiteUrl =$sSiteUrl
GroupName = $spGroup.Title
PrincipalType= $spGroup.PrincipalType
User =$spUser.LoginName
UserEmail =$spUser.Email
} | Select SiteUrl,GroupName,PrincipalType,User,UserEmail
}
catch [System.Exception]
{
Write-Host -ForegroundColor Red $_.Exception.ToString()
}
}
$site| Export-CSV ("C:\"+$FileName+".csv") -NoTypeInformation -Append #-Encoding UTF8
}
Read-Host -Prompt "file created Successfull..! Press any key to close this window"
}
catch [System.Exception]
{
Write-Host -ForegroundColor Red $_.Exception.ToString()
Read-Host -Prompt "Operation failed..! Press any key to close this and re run the script"
}
}
$FileName= "ReportName"
$sSiteUrl = "https://domain.sharepoint.com"
$sUserName = "[email protected]"
$sPassword = ConvertTo-SecureString "YourPassword" -AsPlainText -Force
Write-Host "Getting Site Collection group Members"
Write-Host "-----------------------------------"
Get-SiteGroup-Members -sSiteUrl $sSiteUrl -sUserName $sUserName -sPassword $sPassword -FileName $FileName