SharePoint Online: Get All Site Collections using PowerShell
Requirement: Get all site collections using PowerShell in SharePoint Online.
How to Get a List of Site Collections in SharePoint Online?
A site collection is a group of sites, generally organized by department, project, region, function or business units. If you want to get a list of SharePoint Online site collections, you can go to the SharePoint admin center >> Expand "Sites" >> Active Sites.
This gets you the list of all site collections in SharePoint Online. Let's see the SharePoint online PowerShell to get all site collections.
PowerShell to Get All Site Collections in SharePoint Online:
Site collections are the primary objects in SharePoint Online. Use the Get-SPOSite PowerShell cmdlet to get a list of all site collections in the tenant. Here is the PowerShell to list all SharePoint Online sites.
How to Get All Site Collections in SharePoint Online using PowerShell?
Similar to On-Premises SharePoint Management Shell, You can also use "SharePoint Online Management Shell" to connect to Office 365, SharePoint online sites!
PowerShell to Get All Site Collections including Modern Team sites and Group Sites:
Let's get the list of Sites in SharePoint Online using PowerShell.
SharePoint Online PowerShell to List All Site Collections
Lets get all site collections under a specific path:
SharePoint Online PnP PowerShell to Get All Sites
Get Site Collections List in a HTML Report format
Let's get a list of all site collections in a nice HTML format using PowerShell:
Here is my another article on how to use PowerShell with SharePoint Online: How to Use PowerShell with SharePoint Online?
How to Get a List of Site Collections in SharePoint Online?
A site collection is a group of sites, generally organized by department, project, region, function or business units. If you want to get a list of SharePoint Online site collections, you can go to the SharePoint admin center >> Expand "Sites" >> Active Sites.
This gets you the list of all site collections in SharePoint Online. Let's see the SharePoint online PowerShell to get all site collections.
PowerShell to Get All Site Collections in SharePoint Online:
Site collections are the primary objects in SharePoint Online. Use the Get-SPOSite PowerShell cmdlet to get a list of all site collections in the tenant. Here is the PowerShell to list all SharePoint Online sites.
#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 $AdminUrl = "https://crescent-admin.sharepoint.com/" $UserName= "[email protected]" $Password = "Password goes here" #Setup Credentials to connect $SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force $Credentials = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $UserName, $SecurePassword #connect to the service Connect-SPOService -Url $AdminUrl -Credential $Credentials #sharepoint online get all site collections PowerShell $SiteColl = Get-SPOSite #sharepoint online PowerShell iterate through all site collections ForEach($Site in $SiteColl) { Write-host $Site.Url }This PowerShell enumerate site collections in SharePoint Online and gets URL for each site.
How to Get All Site Collections in SharePoint Online using PowerShell?
Similar to On-Premises SharePoint Management Shell, You can also use "SharePoint Online Management Shell" to connect to Office 365, SharePoint online sites!
Import-Module Microsoft.Online.Sharepoint.PowerShell -DisableNameChecking $AdminSiteURL="https://crescent-admin.sharepoint.com" $Credential = Get-credential Connect-SPOService -url $AdminSiteURL -Credential $Credential #sharepoint online list all site collections powershell Get-SPOSite -Detailed | Format-Table Url, Template, StorageUsageCurrent, StorageQuota, LastContentModifiedDate -AutoSizeHere is the PowerShell script to get all site collections with detailed info from SharePoint Online and Export All Site Collection inventory to CSV:
Connect-SPOService -url "https://crescent-admin.sharepoint.com" -Credential (Get-credential) Get-SPOSite -Detailed | Export-CSV -LiteralPath C:\Temp\SitesInventory.csv -NoTypeInformationThis PowerShell lists all site collections in SharePoint Online tenant along with all available site collection details.
PowerShell to Get All Site Collections including Modern Team sites and Group Sites:
Let's get the list of Sites in SharePoint Online using PowerShell.
#Load SharePoint CSOM Assemblies Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\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" #Get All Site collections from the Tenant- Including Modern Team sites and communication sites Function Get-SPOSites($AdminSiteURL, $Cred) { #Setup credentials to connect $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($AdminSiteURL) $Ctx.Credentials = $Credentials #Get the tenant object $Tenant = New-Object Microsoft.Online.SharePoint.TenantAdministration.Tenant($ctx) #Get All Site Collections $SiteCollections=$Tenant.GetSitePropertiesFromSharePoint(0,$true) $Ctx.Load($SiteCollections) $Ctx.ExecuteQuery() #Iterate through Each site collection ForEach($Site in $SiteCollections) { Write-host $Site.URL } } #Set Parameters $AdminSiteUrl = "https://crescent-admin.sharepoint.com/" $Cred= Get-Credential #sharepoint online powershell list all sites Get-SPOSites -AdminSiteURL $AdminSiteUrl -Cred $Cred
SharePoint Online PowerShell to List All Site Collections
Lets get all site collections under a specific path:
Import-Module Microsoft.Online.SharePoint.Powershell #Config Parameters $AdminSiteURL="https://crescent-admin.sharepoint.com" #Get Credentials to connect to the SharePoint Admin Center $Cred = Get-Credential #Connect to SharePoint Online Admin Center Connect-SPOService -Url $AdminSiteURL –Credential $Cred #Get All site collections which has /sites in its path Get-SPOSite -Filter { Url -like '*/sites*' } -Limit All #Get All site collections of Group site template #Get-SPOSite -Filter { Template -eq "GROUP#0" } -Limit AllYou can filter and get all site collections based on some criteria. E.g. Let's get all sites that are using > 1GB storage
Get-SPOSite -Limit All | where { $_.StorageUsageCurrent -gt 1024 }To filter and get collections: E.g. Get all site collections with "Project*" in their URL.
Get-SPOSite -Filter {$_.url -like "https://tenant.sharepoint.com/sites/Project*"}
SharePoint Online PnP PowerShell to Get All Sites
#Set Parameter $TenantSiteURL="https://crescent.sharepoint.com" #Connect to the Tenant site Connect-PnPOnline $TenantSiteURL -Credentials (Get-Credential) #Get all site collections Get-PnPTenantSiteWe can extract all site collection details and export to CSV using:
#Config Variables $TenantSiteURL = "https://crescent-admin.sharepoint.com/" $CSVFilePath = "C:\Temp\AllSitesData.csv" #Connect to Tenant Admin Site Connect-PnPOnline -Url $TenantSiteURL -UseWebLogin #Get All Site collections data and export to CSV Get-PnPTenantSite -Detailed | Select Title, URL, Owner, LastContentModifiedDate, WebsCount, Template, StorageUsage | Export-Csv -NoTypeInformation $CSVFilePathThis gets all site collections including modern team sites and communication sites. You can include OneDrive sites as:
#Get all site collections including OneDrive Sites Get-PnPTenantSite -IncludeOneDriveSites
Get Site Collections List in a HTML Report format
Let's get a list of all site collections in a nice HTML format using PowerShell:
Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking #Config Parameters $AdminSiteURL="https://crescent-admin.sharepoint.com" $ReportOutput="C:\Temp\SitesRpt.html" #CSS Styles $HeadTag = @" <style type="text/css"> table { border-collapse: collapse; font-family: verdana,arial,sans-serif; font-size:11px; color:#333333; border-width: 1px; border-color: #a9c6c9; border: b1a0c7 0.5pt solid; border-spacing: 1px; border-collapse: separate; /*Sal Table format */ } th { border-width: 1px; padding: 5px; background-color:#8064a2; border: #b1a0c7 0.5pt solid; font-family: Calibri; height: 15pt; color: white; font-size: 11pt; font-weight: 700; text-decoration: none; } td { border: #b1a0c7 0.5pt solid; font-family: Calibri; height: 15pt; color: black; font-size: 11pt; font-weight: 400; text-decoration: none; } tr:nth-child(even) { background-color: #e4dfec; } tr:hover { background-color: #694D8C; color:#ffffff } </style> "@ $PreContentTag = "<h3> SharePoint Online: Site Collections Inventory Report </h3>" #Get Credentials to connect to the SharePoint Admin Center $Cred = Get-Credential #Connect to SharePoint Online Admin Center Connect-SPOService -Url $AdminSiteURL –Credential $Cred #Get All site collections $SiteCollections = Get-SPOSite -Limit All Write-Host "Total Number of Site collections Found:"$SiteCollections.count -f Yellow #Get the site collection details, convert to html and output to the report $SiteCollections | ConvertTo-HTML -Title "Site Collection Inventory Report" -Property URL, Title,@{Expression={$_.LastContentModifiedDate }; Label="Last Modified"} -Head $HeadTag -PreContent $PreContentTag | Out-File $ReportOutputand the report looks like:
Here is my another article on how to use PowerShell with SharePoint Online: How to Use PowerShell with SharePoint Online?
Hi Sir,
ReplyDeleteHow can we separate all Modern Team sites and Teams site? Do you have any script for this requirement?
Could you please help me on this.
Thanks,
Srinivas
Simple! Use: Get-SPOSite -Limit All -Template 'GROUP#0' -IncludePersonalSite:$False
Delete