Para gerar relatório de usuários dos sites SharePoint de um determinado tenant do Microsoft 365, é recomendável rodar o script através do Windows PowerShell ISE.
Para fazer as conexões com o SharePoint e com o Azure Active Directory, necessários para gerar o relatório, é preciso possuir os módulos que podem ser instalados pelos seguintes comandos:
Install-Module AzureAD
Install-Module Microsoft.Online.SharePoint.PowerShell
Em seguida, é preciso executar o script abaixo. Ele irá se conectar tanto no SharePoint Online quanto no Azure Active Directory, e escrever um arquivo de report em CSV. As variáveis para definir o nome do arquivo.csv , o endereço do Tenant e o delimitador do arquivo CSV podem ser editados pelas variáveis $CSVFilename, $TenantName e $RegionDelimiter. Note que no final do arquivo ele irá exibir o hast MD5 e a data e hora atual para fins de auditoria.
$CSVFilename = "sharepointusers.csv"
$TenantName = "contoso"
$RegionDelimiter = ";"
Connect-SPOService -Url https://$TenantName-admin.sharepoint.com
Connect-AzureAD
Write-Host -ForegroundColor Green "Loading all SPOs with Members"
$SpoCSV=(Get-sposite -limit ALL).groupid | where { $_ -ne "00000000-0000-0000-0000-000000000000"}
$ResultSpoCSV = @()
foreach ($t in $SpoCSV){
$UsersSPO=Get-AzureADGroupMember -ObjectId $t -all:$true
$OwnerSPO=Get-AzureADGroupOwner -ObjectId $t -all:$true
$OwnerSPO=(Get-AzureADGroupOwner -ObjectId $t -all:$true|Select -ExpandProperty UserPrincipalName) -join ", "
$g=Get-AzureADGroup -ObjectId $t
$spo=Get-SPOSite -limit ALL|where { $_.groupId -eq $t}
foreach ($Ut in $UsersSpo){
$userRow = [pscustomobject]@{
SpoName = $g.DisplayName
SpoMail = $g.Mail
SpoOwner = $OwnerSPO
SpoURL = $spo.Url
SpoSpaceMB= $Spo.StorageUsageCurrent
SpoUser = $Ut.UserPrincipalName
SpoUserName = $Ut.DisplayName
SpoUserRole = $Ut.UserType}
$ResultSpoCSV+=$UserRow}}
Write-Host
Write-Host -ForegroundColor Green "Showing results"
$ResultSpoCSV | Format-Table -AutoSize
Write-Host
Write-Host -ForegroundColor Green "Creating and exporting CSV file"
$ResultSpoCSV | Export-Csv -NoTypeInformation -Path $CSVFilename -Encoding UTF8 -delimiter "$RegionDelimiter"
Write-Host
Write-Host -ForegroundColor Green "Hash MD5 of file result"
certutil -hashfile $CSVFilename MD5
Write-Host
Write-Host -ForegroundColor Green "Date and time"
Get-Date