-
Notifications
You must be signed in to change notification settings - Fork 660
How to change menu items within SharePoint Online with PnP PowerShell
Changing menu navigation items within SharePoint sites is a tedious manual step, it can take a long time to update the menu items throughout numerous sites. This is where PnP PowerShell comes in to make your life/ work easy.
PnP Powershell Overview SharePoint Patterns and Practices (PnP) contains a library of PowerShell commands (PnP PowerShell) that allows you to perform complex provisioning and artifact management actions towards SharePoint. The commands use CSOM and can work against both SharePoint Online as SharePoint On-Premises. https://github.com/SharePoint/PnP-PowerShell/blob/master/Documentation/readme.md
In this article we will demonstrate how to remove and then add a new menu item from multiple sites using the power of PnP PowerShell cmdlets.
First, we need to connect to the tenant of your current web
$tenantUrl = "https://xxx.sharepoint.com/"
Next, we will get your sign in credentials with Get-Credential
$cred = Get-Credential
In the next line of code, we will put our site page names with in an array called $sites
$sites = "volvo", "ford", "opel", "lada",
Then we will create a for each loop that will create a variable called $name to loop through the array of $sites
foreach($name in $sites) {
Here is where the nuts and bolts of the SharePoint PnP PowerShell come in. We connect to the PnPOnline and add our -Url with our previously created variable $tenantUrl then add the previously created $name variable to sites/$name and our Get-Credentials $Cred variable which logs us in to the SharePoint Online.
Connect-PnPOnline -Url $tenantUrl/sites/$name -Credentials $cred
We then loop through all the sites Navigation Nodes and find a “-Title” called "My old Cars" and remove it from the all the $sites Navigations entirely.
Remove-PnPNavigationNode -Location QuickLaunch -Title "My old Cars" -Force
Next, we can add our new Navigation Page link called “My New Cars” to our navigation menu. We find the location Quicklaunch then add a new -Title called "My New Cars" with the specific -Url.
Add-PnPNavigationNode -Location QuickLaunch -Title “My New Cars” -Url 'SitePages/MyNewCars.aspx'
}
After running you will see that the old link has been removed and a new link node has been added to your navigations.
See full code below.
$tenantUrl = https://YOURSITE.sharepoint.com
$cred = Get-Credential
$sites = "volvo", "ford", "opel", "lada",
foreach($name in $sites) {
Connect-PnPOnline -Url $tenantUrl/sites/$name -Credentials $cred
Remove-PnPNavigationNode -Location QuickLaunch -Title "My old Cars" -Force
Add-PnPNavigationNode -Location QuickLaunch -Title “My New Cars” -Url 'SitePages/MyNewCars.aspx'
}
Hope this helps any aspiring PowerShell ninjas out there :)