How to Troubleshoot Apps for the Modern Connected Worker
All You Need to Know for Automated SharePoint Site Provisioning with PnP PowerShell
1. ERIC OVERFIELD | PixelMill
Microsoft MVP & RD
ALL YOU NEED TO KNOW FOR
AUTOMATED SHAREPOINT
SITE PROVISIONING WITH
PNP POWERSHELL
http://pxml.ly/EO-PnP-Provisioning
https://github.com/eoverfield/SPPnP-Demos
2. ERIC OVERFIELD
President & Co-Founder of PixelMill
Microsoft MVP, Office Servers & Services
Microsoft Regional Director
Published SharePoint Author
SharePoint Community Organizer & Contributor @ericoverfield
ericoverfield.com
3. PixelMill is a modern SharePoint Design Agency based in Northern California. On the forefront of
web design trends since 1998, PixelMill provides innovative collaboration portals to enhance the
user adoption of SharePoint intranets, extranets, and public facing sites.
PIXELMILL
@pixelmillteam
pixelmill.com
4. 1. SharePoint Provisioning Review
2. Introduction to SharePoint PnP
3. Provisioning SharePoint With PnP and PowerShell
4. Tips, Best Practices, and Demos
OVERVIEW
6. @ericoverfieldericoverfield.com
SharePoint Deployment Components
• Site columns
• Content Types
• List Templates
• List Instances
• Master Pages
• Page Layouts
• General branding assets (CSS, JS, etc)
COMMON SHAREPOINT DEPLOYMENT REQUIREMENTS
• Content Pages
• Site Templates
• Office 365 Groups
• Auto-Feature Activation
• Site Configuration Settings
• Property Bag*
• Search Setup
7. @ericoverfieldericoverfield.com
Feature Framework
• Full Trust – SharePoint 2007
• Sandbox – SharePoint 2010 (somewhat deprecated in SPO)
• Add-ins – SharePoint 2013+
Traditionally required Visual Studio
• Compiled code often used – not cloud friendly
• Add-in model clunky for provisioning
TRADITIONAL SHAREPOINT DEVELOPMENT METHODS
8. @ericoverfieldericoverfield.com
FEATURE FRAMEWORK CHALLENGE
Customized site based
on snapshot of existing
OOTB site template
with Feature provided
customization
provisioning
Custom v16.x
SharePoint/O365 v16.x
Custom v16.x
SharePoint/O365 v16.x.1
Features / enhancement / bug fixes / new
experiences released and available to new
or existing sites. Deployed automatically
New features / experiences
not available / difficult to
transfer without continual
on-going maintenance
Custom V16.x
SharePoint/O365 v16.x.next
SharePoint Framework
Copy Customizations
OOTBTime
10. @ericoverfieldericoverfield.com
SharePoint PnP – An open source Initiative
• Originally created by Microsoft and a few others in 2013
• Thanks core team – http://aka.ms/OfficeDevPnP
Not related to Microsoft’s general Patterns and Practices initiative
SharePoint PnP – For SharePoint 2013/2016/O365 – consists of:
• Code, samples, best practices
• Videos, tutorials, and a toolset for customization and working with SharePoint
• Thanks core team – http://aka.ms/OfficeDevPnP
All available on github – https://github.com/SharePoint/PnP
SHAREPOINT / OFFICE 365 DEVELOPMENT PATTERNS AND
PRACTICES
Patterns & Practices
16. @ericoverfieldericoverfield.com
SHAREPOINT PNP CORE COMPONENTS
PnP PowerShell based on a PnP Core Component
Remote Provisioning Schema
• https://github.com/SharePoint/PnP-Provisioning-Schema
Together provide a method to repeatedly provision
17. @ericoverfieldericoverfield.com
GETTING STARTED WITH PNP AND POWERSHELL
Install PnP PowerShell
• https://github.com/SharePoint/PnP-PowerShell#installation
Windows 10 – Very easy – Open PowerShell
• SPO: />Install-Module SharePointPnPPowerShellOnline –AllowClobber
• SP2016: />Install-Module SharePointPnPPowerShell2016 –AllowClobber
• SP2013: />Install-Module SharePointPnPPowerShell2013 –AllowClobber
Have at least PowerShell V3?
• /> $PSVersionTable.PSVersion
• /> Invoke-Expression (New-Object
Net.WebClient).DownloadString('https://raw.githubusercontent.com/
OfficeDev/PnP-PowerShell/master/Samples/Modules.Install/Install-
SharePointPnPPowerShell.ps1')
18. @ericoverfieldericoverfield.com
COMMON PNP POWERSHELL COMMANDS
Update PnP PowerShell – remember, monthly updates!
• Update-Module SharePointPnPPowerShell*
Connect to SharePoint Site
• Connect-PnPOnline -url http://pixelmill-tenant.sharepoint.com/ –Credentials (Get-Credential)
Work with SharePoint data once connected, such as:
• Get-PnPList
• Get-PnPWeb
Apply a provisioning template
• Apply-PnPProvisioningTemplate -Path template.xml
Get detailed help regarding a specific commandlet
• Get-Help Connect-PnPOnline -Detailed
20. @ericoverfieldericoverfield.com
PNP POWERSHELL USAGE SCENARIOS
Connect to a site
• Connect-PnPOnline -url http://pixelmill-tenant.sharepoint.com/ –Credentials (Get-Credential)
Get/set site/web/list/etc settings
• Get-PnPWeb, Set-PnPWeb, Get-PnPSite, Get-PnPPropertyBag
Query data, such as list data, search, etc
• Get-PnPSearchQuery –Query “product”
Create data, such as a list, or a group
• New-PnPList -Title "Demo Announcements" -Url "DemoAnnouncements" -Template Announcements
• Connect-PnPMicrosoftGraph –Scopes “Group.ReadWrite.All” “User.Read.All”
• New-PnPUnifiedGroup -DisplayName “PnP Demo” -Description “PnP Demo Group” -MailNickname “PnPDemo”
Provision SharePoint Template
• Apply-PnPProvisioningTemplate -Path .template.xml -Handlers Lists, Files, CustomActions
21. @ericoverfieldericoverfield.com
PROVISIONING SHAREPOINT WITH PNP POWERSHELL
Create a provisioning template – Manually or based on “template” site
• XML based file based on a schema - https://github.com/SharePoint/PnP-Provisioning-Schema
• Can export from existing site: /> Get-PnPProvisioningTemplate -Out template.xml
• https://github.com/SharePoint/PnP-PowerShell/blob/master/Documentation/GetPnPProvisioningTemplate.md
Connect to SharePoint Site: Connect-PnPOnline
Apply provisioning template
• Many options and handlers to customize experience without having to rewrite template
• Apply-PnPProvisioningTemplate -Path template.xml -Handlers Lists, Files
• https://github.com/SharePoint/PnP-PowerShell/blob/master/Documentation/ApplyPnPProvisioningTemplate.md
Create a PowerShell script to standardize for your user cases
• Provision modern experiences as well including modern pages and SPFx webparts
25. @ericoverfieldericoverfield.com
SIMPLE POWERSHELL SCRIPTS FOR REPEATABLE
PATTERS
Create installation and uninstall processes
• Apply-PnPProvisioningTemplate allows for sending in parameters
• i.e.: -Parameters @{"InfrastructureSiteUrl"=$rootPath}
Allow PS Script to accept parameters
• Script may include logic to provide multiple execution paths for provisioning
PnP Provisioning does not include an explicit uninstall / un-apply command
• Rather use other PnP commands to remove each component as needed
• /> Set-PnPWeb -SiteLogoUrl "" -AlternateCssUrl “ “
• /> Remove-PnPCustomAction -Identity $customAction.Id -Scope Site -Force
27. @ericoverfieldericoverfield.com
PnP Provisioning Limitations
PnP is open source
• Not 100% flushed out – not a “Product”
• Not supported by Premier Support and other direct support channels
• Updated often – Good and bad – keep up to date
• Lively discussions do occur on GitHub project – if you find a bug, report it
• Or fix issues / feature requests yourself and submit pull requests
Custom actions currently not available with Modern UI / Modern Team Sites
29. @ericoverfieldericoverfield.com
PNP PARTNER PACK JUMPSTART YOUR PROJECTS
PnP Partner Pack, currently V2 – A PnP Starter Kit
• A reusable solution that combines aspects of PnP – For Office 365
• https://github.com/SharePoint/PnP-Partner-Pack
Includes many features
• Self-service site provisioning, fully configurable
• Responsive UI package for classic team sites
• UI widget for JavaScript injection to bypass custom master pages
• Governance tools – Azure WebJob based remote timer jobs
• Configurable branding
Installation is tricky, but getting better
• PnP Partner Pack installation video: https://www.youtube.com/watch?v=ezWYorZClTI
31. @ericoverfieldericoverfield.com
CONTRIBUTING TO PNP
PnP is community driven
• Everyone – Anyone can contribute
Code, documentation, samples, PowerShell updates, fixes
• All available for contribution
A core team does control the flow and submission approval
• Contributions are reviewed for quality – good for all
Get started – Watch the video
• https://www.youtube.com/watch?v=ELeGFILRFfQ
32.
33. REVIEW
1. SharePoint Provisioning Review
2. Introduction to SharePoint PnP
3. Provisioning SharePoint With PnP and PowerShell
4. Tips, Best Practices, and Demos
36. THANK YOU
ALL YOU NEED TO KNOW FOR
AUTOMATED SHAREPOINT
SITE PROVISIONING WITH
PNP POWERSHELL
Notes de l'éditeur
Slides will be available from blog and twitter
In-depth look at PnP and in particular the provisioning aspect of PnP
Who has worked with PnP?
Story is remembering when creating a VS solution for provisioning in 2008, create from scratch, then 2010 gave us a template. Full trusts required service app recycle, sandbox only hit site collection. Add-ins didn’t help.
Will make available on blog and twitter (slideshare.net), so if you remember one of those then you can always review everything we discuss
Demos
Focus here on provisioning SharePoint sites / assets / settings, etc
SP keeps changing, open community on best practices makes sense
Feature Framework too rigid
For many features, requires full-tust (O365 with cross out)
Based on a snapshot of SP
Difficult to upgrade and maintain
Examples (Code)
Best Practices
Documentation
It is a give and take, mostly take, but do consider giving