Forum Discussion
Getting the owners for all SharePoint sites in tenant using Powershell
Brandccc Not sure single script will help you for this .
The script using by you get sharepoint owners that are group connected. So using Sharepoint admin account you can get group owners but not 100% real owners who have conrol eplictly on sharepoint only .
To get owners on classic sites or sites that connected to groups Use below >
Use filter to get sites that are not group connected:
$SiteCollections=Get-PnPTenantSite -Filter "Url -like $TenantURL -and Url -notlike '-my.sharepoint.com/' -and Url -notlike '/portals/' "
$Reports = $SiteCollections | Where {$_.GroupId -eq '00000000-0000-0000-0000-000000000000'}
Now use above url to save to csv file and read each site and get owners.
foreach ($row in $csvFile)
{
try {
Connect-PnPOnline $row.url -Interactive
$webdetails = Get-PnPWeb
try
{
$ownergroup = Get-PnPGroup -AssociatedOwnerGroup
}
catch
{
Write-Host $_.Exception.Message for site $row.URL
}
$groupmembers = $null
$groupmembersname=$null
Foreach($member in $ownergroup.Users)
{
$groupmembers = $groupmembers+$member.Email+";"
}
Foreach($member in $ownergroup.Users)
{
$groupmembersname = $groupmembersname + $member.LoginName + ";"
}
# Update the values in the new columns based on existing columns
$row.'Owner group' = $ownergroup.Title
$row.'Owner group Members'=$groupmembers
$row.'Owner group MembersName'=$groupmembersname
}
catch
{
Write-Host "Error in getting site usage report:" $row.url $_.Exception.Message -ForegroundColor Red
$errorUrl = $row.url -join [Environment]::NewLine
}
}