Configuring SharePoint Site Navigation using PnP PowerShell

Loading

Site navigation in SharePoint Online plays a critical role in user experience, accessibility, and content discoverability. With PnP PowerShell, administrators can efficiently configure, customize, and automate navigation management for SharePoint hub sites, team sites, and communication sites.

In this guide, you will learn:
Types of SharePoint Navigation
Managing Global & Local Navigation
Adding, Updating, and Removing Navigation Links
Automating Navigation Configuration using Scripts


Prerequisites

Install PnP PowerShell (if not installed)

Install-Module -Name PnP.PowerShell -Force -AllowClobber

Connect to SharePoint Online

Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yoursite" -Interactive

Ensure you have Admin or Site Owner permissions


Step 1: Understanding SharePoint Navigation Types

Global Navigation – Appears across all pages (Modern Sites).
Local Navigation (Quick Launch) – Shown on the left side in Team Sites.
Hub Navigation – Available when a site is registered as a Hub Site.


Step 2: Retrieve Current Navigation Links

To list all existing Quick Launch links:

Get-PnPNavigationNode -Location QuickLaunch

To list all Top Navigation links:

Get-PnPNavigationNode -Location TopNavigationBar

This helps you review the current navigation structure.


Step 3: Add Navigation Links

1. Add a Quick Launch (Left Navigation) Link

Add-PnPNavigationNode -Title "Documents" -Url "/sites/yoursite/Shared%20Documents" -Location QuickLaunch -External $false

This adds a link to Documents in the left-side menu.
The -External $false flag ensures the link is internal to SharePoint.


2. Add a Top Navigation (Global Navigation) Link

Add-PnPNavigationNode -Title "Company Policies" -Url "/sites/yoursite/Policies" -Location TopNavigationBar

This adds Company Policies to the top navigation menu.


3. Add a Submenu Link under an Existing Navigation Node

If “Company Policies” already exists and you want to add a sub-link:

$parentNode = Get-PnPNavigationNode -Location TopNavigationBar | Where-Object { $_.Title -eq "Company Policies" }
Add-PnPNavigationNode -Title "HR Policies" -Url "/sites/yoursite/HRPolicies" -Parent $parentNode.Id

This creates a dropdown menu under “Company Policies.”


Step 4: Update an Existing Navigation Link

To modify a navigation link (e.g., rename “Company Policies” to “Policies & Procedures”):

$node = Get-PnPNavigationNode -Location TopNavigationBar | Where-Object { $_.Title -eq "Company Policies" }
Set-PnPNavigationNode -Identity $node.Id -Title "Policies & Procedures"

This updates the link title without changing the URL.


Step 5: Remove Navigation Links

1. Delete a Quick Launch Link

$node = Get-PnPNavigationNode -Location QuickLaunch | Where-Object { $_.Title -eq "Documents" }
Remove-PnPNavigationNode -Identity $node.Id

This removes “Documents” from the left navigation.


2. Delete a Top Navigation Link

$node = Get-PnPNavigationNode -Location TopNavigationBar | Where-Object { $_.Title -eq "Company Policies" }
Remove-PnPNavigationNode -Identity $node.Id

This removes “Company Policies” from the top navigation.


Step 6: Configure Hub Site Navigation

If your site is part of a Hub Site, manage Hub Navigation like this:

Add-PnPNavigationNode -Title "Corporate News" -Url "/sites/news" -Location HubSiteNavigation

This adds a “Corporate News” link to the Hub Navigation.


Step 7: Automate Navigation Updates in Bulk

To automate navigation updates for multiple sites, use a CSV file (NavigationLinks.csv):

SiteURLTitleURLLocation
/sites/hrHR Documents/sites/hr/SharedDocumentsQuickLaunch
/sites/financeFinance Reports/sites/finance/ReportsTopNavigationBar
/sites/marketingMarketing News/sites/marketing/NewsHubSiteNavigation

Bulk Script to Add Navigation Links

$navLinks = Import-Csv -Path "C:\NavigationLinks.csv"

foreach ($nav in $navLinks) {
Connect-PnPOnline -Url "https://yourtenant.sharepoint.com$($nav.SiteURL)" -Interactive
Add-PnPNavigationNode -Title $nav.Title -Url $nav.URL -Location $nav.Location
Write-Host "Added $($nav.Title) to $($nav.Location) in $($nav.SiteURL)" -ForegroundColor Green
}

Automates bulk navigation updates across multiple sites.


Step 8: Automate Using Task Scheduler

1️⃣ Open Task Scheduler
2️⃣ Click Create Basic Task
3️⃣ Set Trigger: Daily/Weekly
4️⃣ Set Action: Start a Program
5️⃣ In Program/script, enter:

-ExecutionPolicy Bypass -File "C:\YourScriptPath\ManageNavigation.ps1"

6️⃣ Click Finish

This ensures navigation stays updated automatically.


Troubleshooting Common Issues

1. Link Not Appearing?

Ensure the URL is correct and accessible.
Run Get-PnPNavigationNode to check existing links.

2. Cannot Remove Navigation Link?

Ensure you’re using the correct ID.
Use Get-PnPNavigationNode to verify the link exists.

3. Hub Navigation Not Updating?

✅ Ensure the site is registered as a Hub Site using:

Register-PnPHubSite -Site "https://yourtenant.sharepoint.com/sites/hubsite"

Leave a Reply

Your email address will not be published. Required fields are marked *