SharePoint Online: exportar administradores de colecciones de sitios a un informe CSV
Requisito: Obtener el informe de administradores de la colección de sitios para SharePoint Online.
PowerShell para obtener administradores de colecciones de sitios en SharePoint Online y exportarlos a CSV:
Un administrador de colección de sitios tiene control total sobre una colección de sitios, incluida la capacidad de administrar permisos, contenido y configuraciones. Mantener una lista de administradores de colecciones de sitios en SharePoint Online puede ser importante por motivos de seguridad y gobernanza. Si es administrador de SharePoint Online, es posible que en algún momento necesite exportar los administradores de la colección de sitios de todos los sitios de su entorno a un archivo CSV. Por ejemplo, es posible que necesite esto para documentar quién tiene acceso y a qué sitios, o si necesita tener un registro de los administradores del sitio para fines de auditoría. Este artículo le muestra cómo usar PowerShell para extraer y exportar administradores de colecciones de sitios a un archivo CSV.
Consigamos administradores de colecciones de sitios de todos los sitios de SharePoint Online y exportémoslos a un informe CSV usando PowerShell.
#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
}
Y el informe CSV de los administradores de la colección de sitios para todas las colecciones de sitios de SharePoint Online en el inquilino:
Espera, ¡hay un problema! En los sitios conectados a grupos, verá solo los "Propietarios del grupo" en los resultados del script anterior (por ejemplo, "Propietarios de marketing"). A continuación se explica cómo expandir cada grupo para obtener los propietarios del grupo y exportarlos a un informe CSV usando PnP PowerShell.
#Set Variables
$AdminSiteURL = "https://crescent-admin.sharepoint.com"
$ReportOutput = "C:\Temp\SiteAdmins.csv"
Try {
#Connect to Admin Center
Connect-PnPOnline -Url $AdminSiteURL -Interactive
#Get All Site collections - Exclude: Seach Center, Mysite Host, App Catalog, Redirect, Content Type Hub, eDiscovery and Bot Sites
$SiteCollections = Get-PnPTenantSite | Where -Property Template -NotIn ("SRCHCEN#0", "REDIRECTSITE#0", "SPSMSITEHOST#0", "APPCATALOG#0", "POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1")
#Loop through each site collection
$SiteAdminData = @()
ForEach($Site in $SiteCollections)
{
Write-host -F Yellow "Getting Site Collection Administrators of the site: " $Site.Url
Connect-PnPOnline -Url $Site.Url -Interactive
#Get Site Collection Administrators
$SiteAdminstrators = @()
Get-PnPSiteCollectionAdmin -PipelineVariable Admin | ForEach-Object {
If($_.PrincipalType -eq "SecurityGroup") #Check if its a Microsoft 365 group
{
#Get Members of the Group
$Group = Get-PnPMicrosoft365Group -IncludeOwners | Where {$_.Mail -eq $Admin.Email}
$Group.Owners | Select Email | ForEach-Object {
$SiteAdminstrators += $_.Email
}
}
Else
{
$SiteAdminstrators += $Admin.Email
}
}
$Adminstrators = ($SiteAdminstrators | select -Unique) -join ";"
#Collection Site Admin Details
$SiteAdminData += New-Object PSObject -Property @{
'Site Name' = $Site.Title
'URL' = $Site.Url
'Site Collection Admins' = $Adminstrators
}
}
$SiteAdminData
#Export the data to CSV
$SiteAdminData | Export-Csv $ReportOutput -NoTypeInformation
Write-Host -f Green "Site Collection Admninistrators Data Exported to CSV!"
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
Obtenga administradores de colecciones de sitios de todos los sitios de OneDrive para empresas
Aquí está PnP PowerShell para obtener todos los sitios de OneDrive for Business.
#Variables for processing
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$ReportOutput="C:\Temp\OneDriveAdmins.csv"
Try {
#Connect to SharePoint Online Admin Center
Connect-PnPOnline -url $AdminCenterURL -Interactive
#Get all OneDrive Site colections
$OneDriveSites = Get-PnPTenantSite -IncludeOneDriveSites -Filter "Url -like '-my.sharepoint.com/personal/'"
$SiteAdminData = @()
#Get Site Collection Administrators of Each site
Foreach ($Site in $OneDriveSites)
{
Write-host -f Yellow "Processing Site Collection:"$Site.URL
Connect-PnPOnline -url $Site.URL -Interactive
#Get all Site Collection Administrators
$SiteAdmins = Get-PnPSiteCollectionAdmin
#Get Site Collection Details
$SiteAdminData += New-Object PSObject -Property ([ordered]@{
'Site Name' = $Site.Title
'URL' = $Site.Url
'Site Collection Admins' = ($SiteAdmins | Select -ExpandProperty Email) -join ";"
})
}
$SiteAdminData
#Export the data to CSV
$SiteAdminData | Export-Csv $ReportOutput -NoTypeInformation
Write-Host -f Green "Site Collection Admninistrators Data Exported to CSV!"
}
Catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
Con este script, puede recuperar administradores de colecciones de sitios y generar un informe resumido que incluya a todos los administradores de colecciones de sitios en su entorno de SharePoint Online.
