Búsqueda de sitios web

SharePoint Online: obtenga todas las colecciones de sitios mediante PowerShell


Requisito: Obtener todas las colecciones de sitios mediante PowerShell en SharePoint Online.

¿Cómo obtener una lista de colecciones de sitios en SharePoint Online?

Una colección de sitios es un grupo de sitios, generalmente organizados por departamento, proyecto, región, función o unidad de negocio. Si es responsable de administrar un entorno de SharePoint Online, tarde o temprano necesitará obtener una lista de todas las colecciones de sitios de su arrendamiento. Afortunadamente, PowerShell facilita la recopilación de información sobre su entorno de SharePoint Online. Esta publicación de blog le mostrará cómo usar PowerShell para obtener una lista de todas las colecciones de sitios en su inquilino. También aprenderá a exportar los resultados a un archivo CSV o HTML para fines de generación de informes.

Ver todos los sitios en SharePoint Online Tenant mediante el Centro de administración de SharePoint

¿Cómo ver todas las colecciones de sitios en SharePoint Online? Bueno, si desea obtener una lista de las colecciones de sitios de SharePoint Online, puede ir al centro de administración de SharePoint (https://SuDominio-admin.sharepoint.com) >> Expandir “Sitios” > > Sitios activos.

Esto le proporciona la lista de todas las colecciones de sitios en SharePoint Online. Puede exportarlos a CSV haciendo clic en el botón "Exportar" en la barra de herramientas. Veamos SharePoint Online PowerShell para obtener todas las colecciones de sitios.

¿Cómo obtener una colección de sitios en SharePoint Online usando PowerShell?

Como administrador de SharePoint Online, necesita recuperar información sobre una colección de sitios específica en su entorno de SharePoint. Para obtener una colección de sitios en SharePoint Online usando PowerShell, puede seguir estos pasos:

  1. Abra PowerShell en su máquina local.
  2. Conéctese a su inquilino de SharePoint Online mediante el cmdlet Connect-SPOService. Deberá proporcionar la URL y las credenciales de administrador de SharePoint Online.
  3. Ejecute el cmdlet Get-SPOSite para recuperar la colección de sitios que desee. Por ejemplo, para recuperar la colección de sitios con la URL "https://crescent.sharepoint.com/sites/marketing", ejecutaría el siguiente comando: Get-SPOSite -Identity https://crescent.sharepoint. com/sites/marketing Esto devolverá información sobre la colección de sitios, incluida su URL, título y propietario.
  4. Si desea recuperar información adicional sobre la colección de sitios, puede usar otros cmdlets de PowerShell, como Get-SPOSiteGroup o Get-SPOSiteGroupPermissions.

#Parameters
$AdminSiteURL="https://crescent-admin.sharepoint.com"
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"

#Connect to SharePoint Online from PowerShell
Connect-SPOService -url $AdminSiteURL

#Get the Site Collection
$Site =  Get-SPOSite -Identity $SiteURL

#sharepoint online list all site collections powershell
$Site | Select -Property Template, StorageUsageCurrent, StorageQuota, LastContentModifiedDate, sharingcapability

Tenga en cuenta que, para ejecutar cmdlets de PowerShell para SharePoint Online, debe tener la función de administrador de SharePoint en el inquilino y el Shell de administración de SharePoint Online (o el módulo de PowerShell de SharePoint Online) instalado en su máquina local.

¿Cómo obtener todas las colecciones de sitios en SharePoint Online usando PowerShell?

Las colecciones de sitios son los objetos principales de SharePoint Online. Utilice el cmdlet Get-SPOSite de PowerShell para enumerar todas las colecciones de sitios del inquilino. De manera similar al Shell de administración de SharePoint local, también puede usar el “Shell de administración de SharePoint Online” para conectarse a Office 365 y sitios de SharePoint Online. Aquí está el script de PowerShell para obtener todas las colecciones de sitios en SharePoint Online:


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 -Limit All | Format-Table Url, Template, StorageUsageCurrent, StorageQuota, LastContentModifiedDate, sharingcapability -AutoSize 

De forma predeterminada, el cmdlet Get-SPOSite recupera 200 colecciones de sitios. Debemos especificar el interruptor "Límite" con "Todos" para obtener todos los sitios del inquilino. Aquí está el script de PowerShell para obtener todas las colecciones de sitios con información detallada de SharePoint Online y exportar todo el inventario de la colección de sitios a CSV:


Connect-SPOService -url "https://crescent-admin.sharepoint.com" -Credential (Get-credential)
Get-SPOSite -Detailed | Export-CSV -LiteralPath C:\Temp\SitesInventory.csv -NoTypeInformation

Este PowerShell enumera todas las colecciones de sitios en el inquilino de SharePoint Online junto con todos los detalles de la colección de sitios disponibles.

PowerShell para obtener todas las colecciones de sitios en SharePoint Online

¿Qué tal conectarse a SharePoint Online con las credenciales guardadas? Aquí está el PowerShell para enumerar todos los sitios de SharePoint Online que utilizan credenciales guardadas (¡supongo que la cuenta que especificó en el script no tiene MFA habilitado!):


#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= "Salaudeen@crescent.com"
$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
}

PowerShell para obtener todas las colecciones de sitios, incluidos los sitios de equipo modernos y los sitios de grupo:

Este PowerShell enumera las colecciones de sitios en SharePoint Online y obtiene la URL de cada sitio.

Obtengamos la lista de todos los sitios, incluidos los sitios de grupo modernos y los sitios conectados a grupos en SharePoint Online mediante 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 para enumerar todas las colecciones de sitios

Coloquemos todas las colecciones de sitios en una ruta específica:


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 All

Puede filtrar y obtener todas las colecciones de sitios según algunos criterios. Por ejemplo, obtengamos todos los sitios que utilizan > 1 GB de almacenamiento.


Get-SPOSite -Limit All | where { $_.StorageUsageCurrent -gt 1024 }

Para filtrar y obtener colecciones: por ejemplo, obtenga todas las colecciones de sitios con "Proyecto*" en su URL.


Get-SPOSite -Filter {$_.url -like "https://tenant.sharepoint.com/sites/Project*"}

SharePoint Online PnP PowerShell para obtener todos los sitios

¿Necesita obtener una lista de todas las colecciones de sitios en su entorno de SharePoint Online? ¡PnP PowerShell al rescate! Este script le muestra cómo usar el cmdlet PnP PowerShell Get-PnPTenantSite para obtener una lista de todas las colecciones de sitios en su inquilino.


#Set Parameter
$TenantSiteURL="https://crescent.sharepoint.com"

#Connect to the Tenant site
Connect-PnPOnline $TenantSiteURL -Credentials (Get-Credential)

#sharepoint online pnp powershell get all sites
Get-PnPTenantSite

Podemos extraer todos los detalles de la colección de sitios y exportarlos a CSV usando lo siguiente:


#Config Variables
$TenantSiteURL =  "https://crescent-admin.sharepoint.com/"
$CSVFilePath = "C:\Temp\AllSitesData.csv"

#Connect to Tenant Admin Site
Connect-PnPOnline -Url $TenantSiteURL -Interactive

#Get All Site collections data and export to CSV
Get-PnPTenantSite -Detailed | Select Title, URL, Owner, LastContentModifiedDate, WebsCount, Template, StorageUsage | Export-Csv -path $CSVFilePath -NoTypeInformation

Esto obtiene todas las colecciones de sitios, incluidos los sitios de equipo y los sitios de comunicación modernos. Saltemos el centro de búsqueda, el host de mi sitio, el catálogo de aplicaciones, el centro de tipos de contenido, eDiscovery y Bot, etc., y obtengamos la cuota de todos los sitios en el inquilino:


#Parameter
$TenantAdminURL = "https://Crescent-admin.sharepoint.com"

#Connect to Admin Center
Connect-PnPOnline -Url $TenantAdminURL -Interactive
   
#Get All Site collections - Exclude: Seach Center, Redirect site, Mysite Host, App Catalog, 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
ForEach($Site in $SiteCollections)
{
    #Get the storage Quota of the site
    Write-host $Site.URL - $Site.StorageQuota
}

Puede incluir sitios de OneDrive como:


#Get all site collections including OneDrive Sites
Get-PnPTenantSite -IncludeOneDriveSites

Obtener lista de colecciones de sitios en formato de informe HTML

Obtengamos una lista de todas las colecciones de sitios en un formato HTML amigable usando 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 $ReportOutput

Y el informe se ve así:

Terminando

En conclusión, PowerShell proporciona una manera poderosa y eficiente de recuperar una lista de todas las colecciones de sitios en SharePoint Online. Al utilizar los cmdlets de PowerShell adecuados, los administradores de SharePoint pueden recuperar rápida y fácilmente una lista completa de todas las colecciones de sitios en su entorno. Esta información se puede utilizar para diversas tareas de administración y auditoría, como auditoría, solución de problemas, seguimiento del uso y optimización del entorno de SharePoint.

Aquí hay otro artículo sobre el uso de PowerShell con SharePoint Online: ¿Cómo usar PowerShell con SharePoint Online?

Preguntas frecuentes:

¿Cómo creo una colección de sitios de SharePoint Online usando PowerShell?

Puede crear nuevos sitios en SharePoint Online mediante el Shell de administración de SharePoint Online: New-SPOSite, el cmdlet PnP PowerShell New-PnPTenantSite o los scripts CSOM PowerShell.
Más información: PowerShell para crear una nueva colección de sitios en SharePoint Online

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

Para obtener todos los subsitios de un sitio de SharePoint Online, use: cmdlet Get-PnPSubWeb en PnP PowerShell. También puede usar scripts de CSOM PowerShell para cargar sitios web (subsitios) de una colección de sitios.
Más información: PowerShell para obtener todos los subsitios de una colección de sitios en SharePoint Online

¿Cómo obtengo todos los sitios y subsitios de SharePoint en PowerShell?

Para obtener todas las colecciones de sitios y subsitios, debe obtener la colección web de forma recursiva en CSOM. Con PnP PowerShell: Get-PnPSubWeb -Recurse
Más información: PowerShell para obtener todas las colecciones de sitios y subsitios en SharePoint Online

Artículos relacionados