Converting classic pages to modern

Copper Contributor

I am migrating SharePoint from on-premises to on-line.  The process has copied lots of pages over which are in the classic mode and I want to convert them to modern.  I really don't have time to recreate them all so I was hoping I could find some automated method.

 

I am not a programmer.  I don't know how to use .Net and I can't write programs in PowerShell.

 

All I can see so far is lots of obscure and arcane PowerShell (why have we gone back to the 80s?) but I've been working through it and tried a script which uses ConvertTo-PnPPage but it didn't work, possibly because it's been superseded.  I found a suggestion that I should use PnP.PowerShell instead of the old tools (I think - there are a lot of different instructions with little explanation) so I tried that but when I do

 

 

 

Register-PnPManagementShellAccess

 

 

 

I get an error:

 

 

 

Register-PnPManagementShellAccess : The 'Register-PnPManagementShellAccess' command was found in the module 'PnP.PowerShell', but the module could not be loaded. For more information, run 'Import-Module PnP.PowerShell'.
At line:1 char:1
+ Register-PnPManagementShellAccess
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Register-PnPManagementShellAccess:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CouldNotAutoloadMatchingModule

 

 

 

If I do what it says I just get another error message:

 

 

 

Import-Module : Could not load file or assembly 'System.Management.Automation, Version=7.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
At line:1 char:1
+ Import-Module PnP.PowerShell
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.PowerShell.Commands.ImportModuleCommand

 

 

 

My preference would be to find a way to do this via the admin pages or some other GUI method but if I have to use scripts is there a decent explanation of how to get it to work somewhere?

8 Replies

@Juan Carlos González Martín

 

That's where I find myself getting bogged down.  I'm just an admin, I'm not a programmer.

 

The script from the Microsoft page just gets me a different error message: "List 'sitepages' does not exist at site"

@An_admin_123 Try installing latest version of PnP PowerShell and then use ConvertTo-PnPPage cmdlet.

 

Follow documentations: 

  1. Installing PnP PowerShell 
  2. ConvertTo-PnPPage 

Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.

For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs

I just get a different error message:

"List 'sitepages' does not exist at site"

@An_admin_123 Can you show us the complete PowerShell code you are using currently?

 

Did you check in "Site Contents" of site for "Site Pages" library? Is it available on your SharePoint site?

 

If yes and you are referring to library using title/display name anywhere in your code, try using "Site Pages" instead of "SitePages".


Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.

For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs

https://learn.microsoft.com/en-us/sharepoint/dev/transform/modernize-userinterface-site-pages-powers...

I took the script from there and tried to use it. Of course, I'm not a programmer (or interested in being one) so it's all a little out of my usual scope. I only changed the address it points at.

The line

$pages = Get-PnPListItem -List sitepages -PageSize 500

seems relevant. If I change sitepages to site pages it says:

A positional parameter cannot be found that accepts argument 'pages'.

I have a "Site Pages" page library in Site Contents.

@An_admin_123 Document library display name and internal name (URL name) can be different in SharePoint. So, use this: 

 

$pages = Get-PnPListItem -List "Site Pages" -PageSize 500

Where there is a space in display name of list/library, you have to enclose it inside double quotes as shown above.

 


Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.

For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs

Yes! It seems the command is case sensitive too. I had tried but it has to be "Site Pages", not "site pages". Now it runs at least, even if it doesn't seem to achieve much. It claims to have convereted the pages but they look the same.