Requisito: aplicar la política del sitio en SharePoint Online mediante PowerShell.
¿Cómo aplicar la política del sitio de SharePoint Online usando PowerShell?
Las directivas 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 si creamos una política de sitio en el centro de tipo de contenido en lugar de crear una en cada colección de sitios. Aquí se explica cómo crear una política de sitio en el centro de tipo de contenido de SharePoint Online:
Una vez que publica, la política tarda un tiempo en aparecer en las colecciones de sitios y es posible que tenga que esperar hasta 24 horas. Una vez que se publique 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 de grupo, ¡está deshabilitado de manera predeterminada!), siga estos pasos:
Aplicar la política del sitio a la colección de sitios
Aplicar una política de sitio usando la interfaz web es bastante simple. 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». Vuelva 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 de sitio seleccionada 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:
De acuerdo, 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 para 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 dada.
#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 tipo de contenido no se mostrarán inmediatamente en las colecciones de sitios. Puede que tenga que esperar hasta 24 horas.