Move Files From Local Directory To SharePoint Library Using PNP Provisioning

This article gives the instruction on how to perform PNP provisioning for moving local files to SharePoint Library.

Microsoft SharePoint allows us to use remote provisioning for our SharePoint Online site collections and SharePoint Add-ins. You can easily create a provisioning template and then apply and reuse the same by using simple PowerShell scripts or C# code. It is explained in detail at the Microsoft site

To move all files into a SharePoint library, take the following snippet.

  1. <?xml version="1.0"?>  
  2. <pnp:Provisioning xmlns:pnp="http://schemas.dev.office.com/PnP/2018/01/ProvisioningSchema">  
  3.     <pnp:Preferences Generator="OfficeDevPnP.Core, Version=2.11.1701.1, Culture=neutral, PublicKeyToken=3751622786b357c2" />  
  4.     <pnp:Templates ID="CONTAINER-TEMPLATE-4570F0FB6B05425ABA32D6C13A7BD22C">  
  5.         <pnp:ProvisioningTemplate ID="TEMPLATE-4570F0FB6B05425ABA32D6C13A7BD22C" Version="1" BaseSiteTemplate="STS#0">  
  6.             <pnp:Files>  
  7.                 <pnp:Directory Src="Pics\" Folder="CustomLibrary" Overwrite="true" Recursive="true" Level="Published"></pnp:Directory>  
  8.             </pnp:Files>  
  9.         </pnp:ProvisioningTemplate>  
  10.     </pnp:Templates>  
  11. </pnp:Provisioning>  
I am picking the PNP schema released in Jan 2018. I just mentioned the Source folder from which I am running the below scripts.

PowerShell ISE

Before starting the PowerShell ISE, make sure that you have installed SharePoint Online Management Shell. If not, click here to download & install it.

SharePoint 

Folder Structure in Windows

In the schema, I mentioned the Source folder as “Pics” in Src of Pnp:Directory node.

  1. <pnp:DirectorySrc="Pics\"Folder="CustomLibrary"Overwrite="true"Recursive="true"Level="Published"></pnp:Directory>  
Also, I created the folder in the location with the same name from where I am going to run my script. I added a few files inside my directory.

Before provisioning the XML, we should make sure that we are connected to a SharePoint online site and a library is created with the name “CustomLibrary”.

SharePoint
 
SharePoint 

To connect to SharePoint Online use,

Connect-PnPOnline-Url"https://########.sharepoint.com/sites/PSSamples"

It will ask for user credentials to get connected, give the Office365 user credentials.

SharePoint 

Then, create your library in the SharePoint Site. I created a Document Library and named it as "CustomLibrary".

SharePoint 
 
Once the PowerShell command is connected to SharePoint Online, use the below cmd to apply the provisioning.

Apply-PnPProvisioningTemplate-Path".\MoveDirectory.xml"

After running the command, you could see that the files been moved to your library.
 
SharePoint