PnP (Developer and practices) es framework compuesto por librerías y cmdlets avanzados de PowerShell que facilitan diferentes tareas de administración y desarrollo dentro de SharePoint.
Al ser bastante extenso se ha separado dentro de GitHub en varios repositorios:
Uno de los mayores usos de PnP en SharePoint es para el aprovisionamiento ya sea para migraciones o para generación en lotes de contenido dentro de SharePoint, pero no olvidemos que con PnP podemos hacer casi de todo en SharePoint y automatizar muchísimas cosas.
A continuación un ejemplo de aprovisionamiento desde una aplicación de consola:
Según queramos ejecutarlo en SharePoint Online o en un SharePoint On Premise, consultar este artículo Leer datos de SharePoint desde el lado cliente (Windows forms o Consola) para ver las diferencias a la hora de conectarse.
Tenemos NuGets (paquetes) de PnP para SharePoint Online/2013/2016/2019
https://www.nuget.org/packages?q=SharePointPnPCore*
Por otro lado, para utilizar los cmdlets de PowerShell la descarga se realiza desde la galería oficial:
https://www.powershellgallery.com/packages?q=pnp
Por ejemplo, para instalar los cmdlets para SharePoint Online ejecutamos desde PowerShell:
Install-Module -Name SharePointPnPPowerShellOnline
Si ya los tenemos instalados y queremos actualizarlos a la última versión, ejecutamos en PowerShell:
Update-Module SharePointPnPPowerShell*
Para ver los cmdlets disponibles en SharePoint Online nos conectamos por PowerShell a nuestro tenant y ejecutamos Get-Command:
Connect-PnPOnline –Url https://yoursite.sharepoint.com –Credentials (Get-Credential)
Get-Command -Module *PnP*
Para finalizar, podemos hacernos una idea de todo lo que puede hacer PnP viendo algunos de los muchos vídeos de channel9 https://channel9.msdn.com/blogs/OfficeDevPnP