Copy page/news template between sites using powershell




I'd like to be able to create a page/news template on site A, and copy it over site B. I found a way to copy files over from site A to site B by running something like Get-PnPFile to download the template from site A, and Add-PnPFile -Path './mytemplate.aspx' -Folder 'templates' to upload the file to site B's "templates"-folder, but on site B the template is not listed under the templates gallery when creating new pages/news, so I must have missed something.

Any pointers as to how to both copy the template file and also get it to appear on site B's templates gallery will be appreciated.



5 Replies
best response confirmed by kenneho (Contributor)



You need to have at least one template created before copied files are visible on Templates gallery. I noticed this when copying templates over with Power Automate.


I have been using PnP Provisioning Template to copy page templates between sites. If you are interested, you can check out my blog post about this topic.


Idea is first get all client side pages to a provisioning template, create a new template object with just page templates and apply it to a target site.

Thanks, this seems to be exactly what I'm looking for! I'll check it out.

@Matti Paukkonen I got things working exactly as needed, thanks to your script. Again, thanks!

@Matti Paukkonen , copying the templates works perfectly. However, when I have a template containing images, and copy that template to a new site, we find that the image doesn't seem to get copied. Is this a case even for you? Have you found a way to get this working?

Hi @kenneho,


You can include images to a template by adding -PersistBrandingFiles handle, for example

$basetemplate = Get-PnPProvisioningTemplate -IncludeAllClientSidePages -Handlers PageContents,Pages -OutputInstance -Schema LATEST -PersistBrandingFiles


If you are creating a new template, like in my blog post, you need to add Files.


Example above is actually adding all image from SiteAssets library.


Hope this helps! Blog post examples also updated.