#Variables for processing $AdminCenterURL = "https://Crescent-admin.sharepoint.com" $ReportOutput="C:\Temp\SiteCollectionAdmins.csv" Try { #Connect to SharePoint Online Connect-SPOService -url $AdminCenterURL -Credential (Get-Credential) #Get all Site colections $Sites = Get-SPOSite -Limit ALL $SiteData = @() #Get Site Collection Administrators of Each site Foreach ($Site in $Sites) { Write-host -f Yellow "Processing Site Collection:"$Site.URL #Get all Site Collection Administrators $SiteAdmins = Get-SPOUser -Site $Site.Url -Limit ALL | Where { $_.IsSiteAdmin -eq $True} | Select DisplayName, LoginName #Get Site Collection Details $SiteAdmins | ForEach-Object { $SiteData += New-Object PSObject -Property @{ 'Site Name' = $Site.Title 'URL' = $Site.Url 'Site Collection Admins' = $_.DisplayName + " ("+ $_.LoginName +"); " } } } $SiteData #Export the data to CSV $SiteData | Export-Csv $ReportOutput -NoTypeInformation Write-Host -f Green "Site Collection Admninistrators Data Exported to CSV!" } catch { write-host "Error: $($_.Exception.Message)" -foregroundcolor Red }