Un tutorial práctico para usar PowerShell y el módulo PnP para generar y aplicar plantillas de sitios de SharePoint.
SharePoint es una plataforma de colaboración y gestión de contenidos que permite crear sitios web para diferentes propósitos. A veces, puede ser útil crear una plantilla de un sitio existente que contenga la estructura, el diseño y los datos que queremos replicar en otro sitio. Para ello, podemos usar PowerShell y el módulo PnP de SharePoint Online.
En este artículo, vamos a explicar los pasos para crear una plantilla de un sitio de SharePoint que contiene una lista con sus elementos, y luego crear un sitio nuevo a partir de esa plantilla. Para ello, necesitamos tener instaladas las últimas versiones de PowerShell (7.4.2 actualmente) y del módulo PnP SharePointPnPPowerShellOnline (3.29.2101.0 actualmente).
Una vez comprobado que tenemos instaladas las versiones correspondientes, los pasos a seguir son los siguientes:
1. Conectarnos al sitio de origen, que es el que queremos usar como base para la plantilla.
Connect-PnPOnline -Interactive -URL «url del sitio que vamos a copiar»
Este comando nos pedirá que introduzcamos nuestras credenciales de acceso al sitio.
2. Una vez conectados, pasamos a crear la plantilla.
Get-PnPSiteTemplate -Out PlantillaSP.xml
Este comando generará un archivo XML que contiene la información del sitio, como las páginas, las webparts, los temas, etc. Podemos especificar la ruta en la que deseamos que se guarde el archivo.
3. Ahora vamos a añadir los elementos de las listas deseadas a la plantilla. En este caso añadiremos los elementos de la lista NasaAPOD. Este comando añadirá a la plantilla los datos de la lista ‘NasaAPOD’. Podemos especificar los campos que queremos incluir con el parámetro -Fields.
Add-PnPDataRowsToSiteTemplate -Path “C:Users*****PlantillaSP.xml” -List ‘NasaAPOD’ -Fields ‘Fecha’, ‘Title, ‘Url Foto’, ‘Explicacion’
Realizamos este paso con todas las listas que queramos incluir en la plantilla con sus elementos.
4. Ya está lista la plantilla. Ahora nos conectarnos al dominio de SharePoint donde queremos crear el sitio nuevo.
Connect-PnPOnline -Interactive -URL “https://******.sharepoint.com/”
5. Creamos el sitio nuevo, indicando el nombre y la url que deseamos que tenga. El parámetro -Lcid indica el código de idioma del sitio, en este caso el inglés.
New-PnPSite -Type CommunicationSite -Title «Nuevo Planetario» -Url «https://*****.sharepoint.com/sites/NuevoPlanetario» -Lcid 1033
6. Nos conectamos al sitio nuevo que acabamos de crear.
Connect-PnPOnline -Interactive -URL “https://****.sharepoint.com/sites/NuevoPlanetario”
7. Desactivamos NoScript. Esto nos permitirá aplicar la plantilla al sitio nuevo, ya que por defecto los sitios de SharePoint tienen activada la opción NoScript, que impide la personalización de las páginas.
Set-PnPTenantSite -Url “https://****.sharepoint.com/sites/NuevoPlanetario” -DenyAddAndCustomizePages:$false
8. Aplicamos la plantilla y ya tendremos listo nuestro nuevo sitio de SharePoint.
Invoke-PnPSiteTemplate -Path «C:/Users/*****/PlantillaSP.xml»
Si al aplicar la plantilla nos da el error Invoke-PnPSiteTemplate: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)), es porque no está desactivado NoScript. Esto puede deberse a que no seguimos todos los pasos correctamente. Para solucionarlo repetiremos los pasos a partir del punto 6, conectarnos al nuevo sitio, desactivar NoScript y aplicar la plantilla.
En la siguiente imagen se pueden ver todos los pasos indicados.
Espero que os sea de utilidad! : ) Nos leemos pronto.