Skip to main content

Automate SharePoint Site Creation with PowerShell and PnP

Creating new SharePoint sites while maintaining a consistent look and feel can be challenging. Fortunately, with PowerShell and the PnP (Patterns and Practices) framework, we can automate the process of backing up a site template and applying it to a new site. This blog post will guide you through the necessary steps.

Prerequisites

Before you begin, ensure you have the following:

  • SharePoint Online Management Shell
  • PnP PowerShell module installed
  • Appropriate permissions to access the SharePoint site and admin center

Step-by-Step Guide

1. Backup the Site Template

First, you need to connect to the source site and back up its template.

# Source Site URL input
$SourceSiteURL = Read-Host "Enter Source Site URL"

# Path to XML file
$SchmaXMLPath = ""

# Connect to PnP Online to take template backup
Connect-PnPOnline -Url $SourceSiteURL -Interactive

# Get Site Schema and save to file
Get-PnPSiteTemplate -Out ($SchmaXMLPath) -PersistBrandingFiles -PersistPublishingFiles
    

This script prompts for the source site URL, connects to it, and exports the site's schema to an XML file named . It also includes branding and publishing files in the backup.

2. Connect to the Admin Center

Next, you need to connect to the SharePoint Admin Center to create a new site.

# Take Admin center URL as input
$AdminCenterURL = Read-Host "Enter Admin Center URL"

# Connect to admin center
Connect-PnPOnline -Url $AdminCenterURL -Interactive
    

3. Create the New Site

Now, create a new SharePoint site with the specified details.

# Variables
$SiteName = Read-Host "Enter New Site Name"
$SiteURL = Read-Host "Enter New Site URL"
$SiteDescription = Read-Host "Enter New Site Description"

# Create new site
$NewWeb = New-PnPSite -Title $SiteName -Url $SiteURL -Description $SiteDescription -Type CommunicationSite
    

This script prompts for the new site's name, URL, and description, then creates a new communication site with those details.

4. Apply the Backup Template to the New Site

Finally, connect to the newly created site and apply the backup template.

# Connect to PnP Online to destination site
Connect-PnPOnline -Url $SiteURL -Interactive

# Apply Pnp Provisioning Template
Invoke-PnPSiteTemplate -Path $SchmaXMLPath -ClearNavigation
    

This script connects to the new site and applies the previously saved template, ensuring the new site has the same configuration as the source site.

Conclusion

Using this PowerShell script, you can easily back up a SharePoint site template and apply it to a new site. This ensures consistency across your SharePoint environment and saves time in setting up new sites. Remember to run these scripts with appropriate permissions and verify the applied template to ensure all customizations are in place.

If you have any questions or run into issues, feel free to leave a comment below. Happy SharePoint site creating!

Comments

Popular posts from this blog

Identity client runtime library (IDCRL) did not get a response from the login server.

Recently I was doing some testing with a background PowerShell and encountered a weird error. “Identity client runtime library (IDCRL) did not get a response from the login server”. The error that you might encounter while working with PowerShell. This error is very misleading when it comes to identifying what could go wrong. After doing quite a good amount of research below are the probable causes for the error. Invalid Credentials MFA (Multi-Factor Authentication) Manage security defaults. Solutions Invalid Credentials Check if your credentials are wrong. Especially if you are using variables. MFA (Multi-Factor Authentication) Check if MFA is enabled on the account which you are using. These only affect you badly if you are developing PowerShell for a background Job. Go to Microsoft 365 admin center Users -> Active users -> Select the user -> Manage multifactor authentication -> Select the user -> Disable multi-factor authentication. M

Business Data Connectivity

I came to a requirement wherein I was supposed to get data from an 3 rd party portal using API’s and then bring them to SharePoint server. The first approach that I finalized was just to make BDC solution that will get data from 3 rd party portal and will deploy it to SharePoint. How to Create BDC solution in SharePoint? I found below link that is having really great description about hot to create and deploy the BDC solution to SharePoint. http://www.c-sharpcorner.com/uploadfile/hung123/creating-business-data-connectivity-service-using-visual-studio-2010/ After creating an POC I came to know that BDC model cannot be deployed on Multi tenant farm. So what can be done next? After some amount of googling I came to know that we can create BDC solution using WCF services also. So I created a WCF service solution that acted as a wrapper that used to fetch data from the portal. We can them publish that service to IIS or Server and use the service referen

New-PnPTenantSite: The remote server returned an error: (401) Unauthorized.

New-PnPTenantSite: The remote server returned an error: (401) Unauthorized. Recently I was working on automate SharePoint site provisioning PnP script. We wanted to schedule this script to auto trigger on hourly basis, so we scheduled the script. As the script was to be scheduled one, we started creating SharePoint Apps to manage authentication. Register SharePoint Add-ins Go to <site collection url>/_layouts/15/AppRegNew.aspx by using a web browser. AppRegNew page form Enter values for the follow form fields: Add-in ID . Also known as client ID; a GUID that can be generated (when you select Generate ) or pasted into AppRegNew.aspx. The value must be unique for each add-in and must be lowercase .   Add-in Secret . Also known as the client secret, an opaque string. It is generated on the AppRegNew.aspx page by using the Generate button. Title:  A user-friendly title: for example, Contoso photo print