SharePoint Online: PowerShell to Get All Subsites in a Site Collection
Requirement: PowerShell to list all subsites in a SharePoint Online Site collection.
SharePoint Online: Get All Subsites using PowerShell
How to get all subsites in a site collection in SharePoint Online? To get all subsites of a site (either a top-level site or sub-site), use this PowerShell:
PowerShell to Get all sub-sites in a Site Collection:
Here is the SharePoint online PowerShell to get all subsites (Webs) recursively.
Get Subsites of a Site using PowerShell PnP
We can get Subsites in SharePoint Online using PowerShell Pnp as well. Here is the PnP PowerShell to get all subsites in a site collection in SharePoint Online.
To get all sites and subsites in SharePoint Online using PowerShell, use: Get All Sites and Subsites in SharePoint Online using PowerShell
SharePoint Online: Get All Subsites using PowerShell
How to get all subsites in a site collection in SharePoint Online? To get all subsites of a site (either a top-level site or sub-site), use this PowerShell:
#Requirement: sharepoint online get all subsites powershell #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 $SiteURL = "https://crescent.sharepoint.com/Sites/Marketing" Try { #Get Credentials to connect $Cred= Get-Credential #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) #Get the web $Web = $Ctx.web $Ctx.Load($Web) #get all subsites in sharepoint online powershell $Ctx.Load($Web.Webs) $Ctx.executeQuery() #Loop through each subsite and get subsite URL ForEach ($Subweb in $web.Webs) { Write-host $Subweb.url } } Catch { write-host -f Red "Error:" $_.Exception.Message }This PowerShell script gets all immediate subsites of a given site. How to list all subsites recursively?
PowerShell to Get all sub-sites in a Site Collection:
Here is the SharePoint online PowerShell to get all subsites (Webs) recursively.
#Load SharePoint Online 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 $SiteUrl = "https://crescent.sharepoint.com/sites/Sales/" $UserName="[email protected]" $Password ="Password goes here" #Setup Credentials to connect $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force)) #Get the Root Web Function Get-SPOWeb() { param( $WebURL = $(throw "Please Enter the Site Collection URL") ) #Get Web information and subsites $Context = New-Object Microsoft.SharePoint.Client.ClientContext($webURL) $Context.Credentials = $credentials $Web = $context.Web $Context.Load($web) $Context.Load($web.Webs) $Context.executeQuery() #Do something with the current sub-site Write-host $Web.URL #Iterate through each subsite in the current web foreach ($Subweb in $web.Webs) { #Call the function recursively to process all subsites underneath the current web Get-SPOWeb($Subweb.url) } } #Call the function Get-SPOWeb -WebURL $SiteUrlThis PowerShell gets all subsites from a given site collection. Here is another article that iterates through all subsites and changes the logo: SharePoint Online: How to Change Site Logo using PowerShell?
Get Subsites of a Site using PowerShell PnP
We can get Subsites in SharePoint Online using PowerShell Pnp as well. Here is the PnP PowerShell to get all subsites in a site collection in SharePoint Online.
#Config Variables $SiteURL = "https://crescenttech.sharepoint.com" #Get Credentials to connect $Cred = Get-Credential Try { #Connect to PNP Online Connect-PnPOnline -Url $SiteURL -Credentials $Cred #Get subsites in SharePoint Online using PnP PowerShell $WebsCollection = Get-PnPSubWebs -Recurse ForEach($Web in $WebsCollection) { Write-host $Web.Url } } catch { write-host "Error: $($_.Exception.Message)" -foregroundcolor Red }The -Recurse switch in Get-PnPSubWebs cmdlet gets all subsites from all levels of the site collection recursively.
To get all sites and subsites in SharePoint Online using PowerShell, use: Get All Sites and Subsites in SharePoint Online using PowerShell
How can you generate the subsites list for all site collections in the tenant using PnP PowerShell
ReplyDeleteHere you go: PnP PowerShell to Get All Site collections and Subsites in SharePoint Online
Delete