PowerShell para obtener todos los sitios asociados con los sitios centrales en SharePoint Online
Requisito: Obtener la asociación del sitio central en SharePoint Online mediante PowerShell.
SharePoint Online: obtenga asociación de sitios centrales mediante PowerShell
Los sitios de SharePoint Online Hub ayudan a organizar sitios relacionados en portales centralizados basados en atributos organizacionales como proyectos, equipos, conceptos, departamentos, regiones, etc. Si no está familiarizado con los sitios Hub en Office 365, le recomiendo que consulte este enlace Antes de continuar. Los sitios centrales en SharePoint Online se explican en mi otro artículo: Configuración de sitios centrales en SharePoint Online
¿Cómo obtener todos los sitios Hub y sus colecciones de sitios asociados?
Para obtener todas las asociaciones de sitios centrales, diríjase a:
- Inicie sesión en el Centro de administración de SharePoint Online >> Haga clic en "Sitios activos"
Filtrar según el sitio Hub específico
Esto le proporciona la lista de sitios asociados con el sitio central en particular.
PowerShell para obtener asociaciones de sitios centrales en SharePoint Online
Aquí está el PowerShell para obtener todos los sitios asociados con los sitios centrales en SharePoint Online:
#Import SharePoint Online PowerShell Module
Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking
#Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
#Connect to SharePoint Online
Connect-SPOService -Url $AdminCenterURL -Credential (Get-Credential)
#Get all Hubsites
$HubSites = Get-SPOHubSite
#Get all site collections
$Sites = Get-SPOSite -Limit All
#Iterate through site collections to get associated sites with the hub
ForEach($Hub in $HubSites)
{
Write-host "Hub-Site:"$Hub.SiteUrl
#Get the ID of the Hubsite
$HubSiteId = $Hub.ID.GUID
#Iterate through each site collection
ForEach($Site in $Sites)
{
#get the Associated Hubsite ID
$AssociatedHubSiteID = (Get-SPOSite $site.Url).HubSiteID.GUID
If($AssociatedHubSiteID -eq $HubSiteId)
{
Write-Host "`t $($Site.Url)"
}
}
}
Este script de PowerShell le proporciona la lista de todos los sitios centrales y sus colecciones de sitios asociados. Para obtener sitios centrales asociados de una colección de sitios específica, utilice lo siguiente:
#Import SharePoint Online PowerShell Module
Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking
#Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$HubSiteURL = "https://crescent.sharepoint.com/sites/intranet"
#Connect to SharePoint Online
Connect-SPOService -Url $AdminCenterURL -Credential (Get-Credential)
#Get the Hubsite ID
$HubSiteId = (Get-SPOHubSite | Where {$_.SiteUrl -eq $HubSiteURL}).Id.Guid
#Get all site collections
$Sites = Get-SPOSite -Limit All
#Iterate through site collections to get associated sites with the hub
ForEach($Site in $Sites)
{
Try {
#Get the Associated Hubsite ID of the site collection
$AssociatedHubSiteID = (Get-SPOSite $site.Url).HubSiteID.GUID
If($AssociatedHubSiteID -eq $HubSiteId)
{
Write-Host "`t $($Site.Url)"
}
}
Catch {
write-host -f Red "`tError:" $_.Exception.Message
}
}
Obtenga todos los sitios asociados con un sitio central mediante PnP PowerShell
A continuación se muestra un ejemplo de cómo utilizar PnP PowerShell para obtener todos los sitios asociados con un sitio central:
#Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$HubSiteURL = "https://crescent.sharepoint.com/sites/intranet"
#Connect to Pnp Online
Connect-PnPOnline -Url $AdminCenterURL -Credentials (Get-Credential) #-Interactive
#Get the hub site id
$HubSiteID = (Get-PnPTenantSite $HubSiteURL).HubSiteId
#Get all site collections associated with the hub site
Get-PnPTenantSite -Detailed | select url | ForEach-Object {
$Site = Get-PnPTenantSite $_.url
If($Site.HubSiteId -eq $HubSiteId){
write-host $Site.url
}
}
Contamos con PowerShell para obtener todas las colecciones de sitios asociados con el sitio Hub. Ahora, apliquémoslo en acción configurando todos los sitios asociados en modo de solo lectura.
#Variables
$AdminCenterURL = "https://crescent-admin.sharepoint.com"
$HubSiteURL = "https://crescent.sharepoint.com/sites/intranet"
#Connect to Pnp Online
Connect-PnPOnline -Url $AdminCenterURL -Credentials (Get-Credential) #-Interactive
#Get the hub site id
$HubSiteID = (Get-PnPTenantSite $HubSiteURL).HubSiteId
#Loop through site collections
$Sites = Get-PnPTenantSite
ForEach($Site in $Sites)
{
#Get the Site collection
$Site = Get-PnPTenantSite $Site.url -ErrorAction SilentlyContinue
If($Site)
{
If($Site.HubSiteId -eq $HubSiteId)
{
write-host "Setting Site Collection to Read-only:"$Site.url
Set-PnPTenantSite -Url $Site.URL -LockState ReadOnly
}
}
}
