Búsqueda de sitios web

SharePoint Online: recorrer todos los subsitios de una colección de sitios mediante PowerShell


Requisito: A menudo teníamos que recorrer cada subsitio de una colección de sitios mientras trabajábamos con SharePoint Online usando PowerShell.

Secuencia de comandos CSOM de PowerShell para iterar a través de todos los subsitios de una colección de sitios en SharePoint Online:

Recorrer todos los subsitios de una colección de sitios de SharePoint Online mediante PowerShell es esencial para administrar y automatizar su entorno de SharePoint Online. Recorrer todos los subsitios le permite recuperar información sobre los subsitios y realizar diversas acciones, como crear o eliminar artefactos. En este artículo se analizará el uso de PowerShell para recorrer todos los subsitios de una colección de sitios de SharePoint Online.

Este script recorre en iteración cada subsitio y enumera todas las URL de los subsitios:


#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"

#Variables for Processing
$SiteCollUrl = "https://crescent.sharepoint.com/sites/projects"
 
#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
#Custom function to get all subsites in a given site collection
Function Get-SPOWebs($Url, $Credentials)
{
    #Set up the context
    $Context = New-Object Microsoft.SharePoint.Client.ClientContext($Url) 
    $Context.Credentials = $credentials

    $web = $Context.Web
    $Context.Load($web)
    $Context.Load($web.Webs)
    $Context.ExecuteQuery()

    #Do Something Here
    Write-host $Web.URL

    #Process Each subsite in current site
    ForEach($web in $web.Webs)
    {
        #call the function recursively
        Get-SPOWebs $web.Url $Credentials
    }
} 

#call the function                   
Get-SPOWebs $SiteCollUrl $Credentials

A continuación se muestra un ejemplo práctico de cómo recorrer todos los subsitios de una colección de sitios y cambiar el logotipo en cada subsitio: ¿Cómo cambiar el logotipo en SharePoint Online usando PowerShell?

¿Cómo recorrer todos los subsitios en SharePoint Online usando PnP PowerShell?

La versión PnP PowerShell para recorrer subsitios es la siguiente con el cmdlet Get-PnPSubWeb:


#Parameter
$SiteURL = "https://crescent.sharepoint.com/sites/projects"
 
Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Interactive
  
    #Get all subsites in a SharePoint Online site
    $Subsites = Get-PnPSubWeb -Recurse -IncludeRootWeb
      
    #Iterate through each subsite
    ForEach($site in $Subsites)
    {
        Write-host $Site.Url
    }
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

Artículos relacionados