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
):
SiteURL | Title | URL | Location |
---|---|---|---|
/sites/hr | HR Documents | /sites/hr/SharedDocuments | QuickLaunch |
/sites/finance | Finance Reports | /sites/finance/Reports | TopNavigationBar |
/sites/marketing | Marketing News | /sites/marketing/News | HubSiteNavigation |
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"