Búsqueda de sitios web

SharePoint Online: PowerShell para recorrer todas las colecciones de sitios


Requisito: PowerShell para recorrer en iteración todas las colecciones de sitios en SharePoint Online Tenant.

¿Cómo recorrer todos los sitios en SharePoint Online?

¿Alguna vez ha querido recorrer todos los sitios de su entorno de SharePoint Online? Tal vez desee obtener una lista de todos los propietarios de sitios, o simplemente enumerar todos los sitios para poder realizar un procesamiento adicional en ellos. Cualquiera sea el motivo, ¡PowerShell puede ayudar! En este artículo, veamos cómo usar PowerShell para recorrer todos los sitios en su inquilino de SharePoint Online.

Recorra todos los sitios en SharePoint Online usando PowerShell

Hay maneras diferentes de hacer esto. Usemos el cmdlet Get-SPOSite de SharePoint Online PowerShell para recuperar todos los sitios en el inquilino y luego recorrerlos en iteración.


#Parameter
$AdminSiteURL = "https://crescent-admin.sharepoint.com"

#Connect to SharePoint Online Admin Center
Connect-SPOService -Url $AdminSiteURL
 
#Get All site collections
$SiteCollections = Get-SPOSite -Limit All
 
#Traverse through each site collection and get their subsits
Foreach ($Site in $SiteCollections)
{
    Write-Host $Site.Url
}

Esta secuencia de comandos primero se conecta a SharePoint Online mediante el cmdlet Connect-SPOService y le solicita que ingrese sus credenciales de inicio de sesión. Luego, obtiene todas las colecciones de sitios del inquilino mediante el cmdlet Get-SPOSite. Finalmente, recorre en iteración cada colección de sitios y realiza una operación (en este caso, obtener la URL del sitio). Esto puede resultar útil para tareas como exportar datos del sitio o simplemente obtener una lista de todos los sitios de la granja.

SharePoint Online: PnP PowerShell para recorrer sitios

Este script PnP PowerShell recorre todos los sitios en su entorno de SharePoint Online y le proporciona la URL del sitio.


#Parameter
$AdminSiteURL = "https://crescent-admin.sharepoint.com"

Try {
    #Connect to Admin Center
    Connect-PnPOnline -Url $AdminSiteURL -Interactive
 
    #Get All Site collections  
    $SitesCollection = Get-PnPTenantSite
 
    #Loop through each site collection
    ForEach($Site in $SitesCollection)  
    {  
        Write-host -F Green $Site.Url  
    }
}
Catch {
    write-host -f Red "Error:" $_.Exception.Message
}

Puede modificar el script para realizar cualquier operación que necesite en cada colección de sitios. Por ejemplo, puede usar el cmdlet Set-PnPWeb para actualizar el tema o la navegación de un sitio, o el cmdlet Add-PnPUserToGroup para agregar usuarios a un grupo.

Iterar a través de todos los sitios, excluyendo ciertos tipos de sitios

¿Qué tal excluir Seach Center, Mysite Host, sitios de redireccionamiento, catálogo de aplicaciones, Content Type Hub, eDiscovery y Bot Sites y colocar todos los sitios en la ruta administrada “/sites/”?


#Config Variables
$TenantAdminURL = "https://crescent-admin.sharepoint.com"

#Get Credentials to connect
$Cred = Get-Credential

#Connect to Admin Center using PnP Online
Connect-PnPOnline -Url $TenantAdminURL -Credentials $Cred

#Get All Site collections - Exclude: Seach Center, Redirect sites, Mysite Host, App Catalog, Content Type Hub, eDiscovery and Bot Sites
$SiteCollections = Get-PnPTenantSite | Where { $_.URL -like '*/sites*' -and $_.Template -NotIn ("SRCHCEN#0", "REDIRECTSITE#0", "SPSMSITEHOST#0", "APPCATALOG#0", "POINTPUBLISHINGHUB#0", "EDISC#0", "STS#-1")}

#Loop through each site collection
ForEach($Site in $SiteCollections)
{
    Try {
        Write-host "Processing Site:"$Site.URL -f Yellow
        #Connect to the site
        Connect-PnPOnline -Url $Site.URL -Credentials $Cred

        #Get all document libraries from the site
        $DocumentLibraries = Get-PnPList | Where-Object {$_.BaseType -eq "DocumentLibrary" -and $_.Hidden -eq $False -and $_.ItemCount -gt 0}

        #Iterate through document libraries
        ForEach ($List in $DocumentLibraries)
        {
            Write-host "`tTotal Number of Items in '$($List.Title)':" $List.itemCount -f Green
        }
    }
    Catch {
        write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
    }
}

Esto puede resultar útil si necesita obtener una lista de todos los sitios.

Script PowerShell CSOM para recorrer todas las colecciones de sitios

Tenga en cuenta que el método CSOM solo obtiene sitios clásicos (¡no se incluyen sitios modernos ni sitios de comunicación en este enfoque!)


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll"
 
#Set Parameters
$AdminCenterURL = "https://crescent-admin.sharepoint.com/"

Try {
    #Setup Credentials to connect
    $Cred= Get-Credential
     
    #Setup the Context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminCenterURL)
    $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
  
    #Get the tenant object 
    $Tenant = New-Object Microsoft.Online.SharePoint.TenantAdministration.Tenant($Ctx)
 
    #Get all site collections
    $Sites= $Tenant.GetSiteProperties(0, $true)
    $Ctx.Load($Sites)
    $Ctx.ExecuteQuery()
     
    ForEach($Site in $Sites)
    {
        Write-Host $Site.URL
    }
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

Publicación relacionada: SharePoint Online: PowerShell para obtener todas las colecciones de sitios y subsitios

Conclusión

En conclusión, usar PowerShell es una forma conveniente de recorrer todas las colecciones de sitios en SharePoint Online y realizar operaciones en ellas. Al utilizar el script proporcionado en este tutorial, puede conectarse fácilmente a SharePoint Online, obtener una lista de todas las colecciones de sitios en el inquilino e iterar por cada colección de sitios para realizar una operación específica. Esto puede resultar útil cuando necesita realizar una operación por lotes en varias colecciones de sitios o cuando desea automatizar el proceso de administración de su entorno de SharePoint Online.

Artículos relacionados