SharePoint Online: ¿Cómo aplicar la política del sitio usando PowerShell?
Requisito: Aplicar la política del sitio en SharePoint Online mediante PowerShell.
¿Cómo aplicar la política del sitio de SharePoint Online mediante PowerShell?
Las políticas del sitio son una excelente manera de implementar la gobernanza en SharePoint Online. La aplicación de políticas del sitio se puede realizar a través de la interfaz del navegador web de SharePoint Online; sin embargo, el uso de PowerShell puede ser más eficiente y permitir la automatización en escenarios a gran escala. En esta guía, le mostraremos cómo aplicar políticas de sitio en SharePoint Online usando PowerShell.
Crear una política de sitio en SharePoint Online
¡A partir de hoy, no podemos crear una nueva política de sitio a través de PowerShell! Sin embargo, podemos ahorrar tiempo creando una política de sitio en el centro de tipos de contenido en lugar de crear una en cada colección de sitios. A continuación se explica cómo crear una política de sitio en el centro de tipos de contenido de SharePoint Online:
- Inicie sesión en el centro de tipos de contenido de su inquilino en https://
.sharepoint.com/sites/contentTypeHub - Haga clic en el engranaje de Configuración en la esquina superior derecha >> Elija "Configuración del sitio".
- Haga clic en el enlace "Políticas del sitio" en la sección "Administración de la colección de sitios".
Cree una nueva política según el requisito. Creé una política que hace que la colección de sitios sea de solo lectura seleccionando "No cerrar ni eliminar el sitio automáticamente" y marcando "La colección de sitios será de solo lectura cuando se cierre".
- Una vez creada la política del sitio, debe publicarla en las colecciones de sitios. Desde la página Políticas del sitio del centro de tipos de contenido, haga clic en el enlace "Administrar publicación para esta política" junto a la política del sitio que acaba de crear.
- Elija la opción "Publicar" o "Volver a publicar" para enviar la política de su sitio a todas las colecciones de sitios de SharePoint Online.
Una vez que la publique, la política tardará algún tiempo en aparecer en las colecciones de sitios y es posible que deba esperar hasta 24 horas. Una vez publicada la política de su sitio, debería verla en la página "Política del sitio" de la colección de sitios de destino.
Active la función "Política del sitio", si aún no está activada
La función "Política del sitio" debe activarse en el nivel de la colección de sitios para aplicar la Política. Si aún no está activado (¡en los sitios grupales, está deshabilitado de forma predeterminada!), siga estos pasos:
- Vaya a Configuración >> Configuración del sitio >> Haga clic en el enlace "Características de la colección de sitios".
Haga clic en el botón "Activo" para la función de política del sitio.
Aplicar la política del sitio a la colección de sitios
Aplicar una política de sitio mediante la interfaz web es bastante sencillo. Vaya a Configuración del sitio para aplicar la política del sitio y haga clic en el enlace "Cierre y eliminación del sitio" en Administración del sitio. Seleccione la política del sitio que creó y haga clic en el botón "Aceptar". Regrese a la página "Cierre y eliminación del sitio" para hacer clic en el botón "Cerrar este sitio ahora" para cerrar una colección de sitios. La política del sitio seleccionado se aplicará después de que se cierre una colección de sitios.
PowerShell para aplicar la política del sitio a la colección de sitios:
Muy bien, cuando necesite aplicar una política de sitio para una gran cantidad de sitios, podemos usar PowerShell en lugar de la interfaz de usuario web. Una vez que la política del sitio esté disponible en los sitios de destino, podemos aplicarla a la colección de sitios a través de PowerShell. Aquí está el script CSOM PowerShell que se debe aplicar:
#Load SharePoint Online 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"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.Office.Client.Policy.dll"
#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"
$PolicyName = "Set Site Read-Only"
#Setup 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)
$Ctx.ExecuteQuery()
#Get Site Policies
$Policies = [Microsoft.SharePoint.Client.InformationPolicy.ProjectPolicy]::GetProjectPolicies($Ctx, $Web)
$Ctx.Load($Policies)
$Ctx.ExecuteQuery()
#Get the Policy to Apply
$SitePolicy = $Policies | Where -Property Name -eq $PolicyName
If($SitePolicy)
{
#Apply the policy
[Microsoft.SharePoint.Client.InformationPolicy.ProjectPolicy]::ApplyProjectPolicy($Ctx, $Web, $SitePolicy)
$Web.Update()
$Ctx.ExecuteQuery()
#Close the Site
[Microsoft.SharePoint.Client.InformationPolicy.ProjectPolicy]::CloseProject($Ctx,$Web)
$Ctx.ExecuteQuery()
Write-host "Site Policy has been Applied & Site Closed Successfully!" -f Green
}
Para abrir el sitio nuevamente, use lo siguiente:
[Microsoft.SharePoint.Client.InformationPolicy.ProjectPolicy]::UnArchiveSite($ctx,$SiteURL)
PnP PowerShell para aplicar la política del sitio en SharePoint Online
Ahora, usemos PnP PowerShell para activar la función "Política del sitio" en la colección de sitios si aún no está activada, y luego apliquemos la "Política del sitio" a la colección de sitios determinada.
#Apply Site Policy for a Site collection
Function Apply-PnPSitePolicy([String]$SiteUrl, [String]$PolicyName)
{
#Connect to the Site
Connect-PnPOnline -Url $SiteUrl -Interactive
#Check if "Site Policy" Feature is active
$SitePolicyFeature = Get-PnPFeature -Identity "2fcd5f8a-26b7-4a6a-9755-918566dba90a" -Scope Site -Web $SiteUrl
If($SitePolicyFeature.DefinitionId -eq $null)
{
#Activate "Site Policy" Feature for the site collection
Enable-PnPFeature -Identity "2fcd5f8a-26b7-4a6a-9755-918566dba90a" -Scope Site
Write-Host "Site Policy Feature is Activated at $($SiteUrl)" -ForegroundColor Green
}
#Get Policy to Activate
$SitePolicyToActivate = Get-PnPSitePolicy -Name $PolicyName | Select-Object -Property Name
If ($SitePolicyToActivate)
{
#Apply Site Policy
Set-PnPSitePolicy -Name $PolicyName
#Close the site
Set-PnPSiteClosure -State Closed
Write-Host "Site Policy Applied to $($SiteUrl)" -ForegroundColor Green
}
Else
{
write-Host "Site Policy '$($PolicyName)' not found in Site $($SiteUrl)" -ForegroundColor Yellow
}
}
#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Purchase"
$PolicyName= "Set Site Read-Only"
#Call the function to apply site policy
Apply-PnPSitePolicy -SiteUrl $SiteURL -PolicyName $PolicyName
Si acaba de activar la función "Política del sitio", las políticas creadas en el centro de tipos de contenido no se mostrarán inmediatamente en las colecciones de sitios. Es posible que tengas que esperar hasta 24 horas.

