Búsqueda de sitios web

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.

Debe tener derechos de administrador de colección de sitios para poder obtener administradores de colección de sitios existentes de un sitio de SharePoint Online a través de PowerShell. ¿Cómo agregar un administrador de colección de sitios a todos los sitios de 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.

Artículos relacionados