pnp / pnp/powershell

[BUG] Add-PnPNavigationNode behaviour issue on root site

Open
#5,249 0 comments 0 reactions 1 assignee View on GitHub

@reshmee011 is already working on this.

Since Feb 26, 2026.

bug
Dominant language
C#
Stars
904
Forks
407
Avg merge
9h 16m
Merged PRs (30d)
10

Description

Scripting the creation of hub navigation on the root site of SharePoint.

Add-PnPNavigationNode -Title "Test" -Url "https://mytenant.sharepoint.com/sites/targetsite" -Location TopNavigationBar

This command on any other site under ...sharepoint.com/sites/ works fine

On the root SharePoint site it gives an error saying the target can't be found, it tells us it's the file '/sites/targetsite' that is missing.

Add-PnPNavigationNode: Cannot open "/sites/targetsite": no such file or folder.

Adding the -external switch resolves this as it obviously stops it shortening the url to a relative one.

We have spent a week trying to work out what is going on here. The issue came up because the menu we were creating was a copy from a dev site where all the links were to "https://mytenant.sharepoint.com". These all created fine on the homesite but were being marked as ''internal' since we didn't use the switch. This meant that users were then unable to edit the target url in the GUI to another site or page. The GUI doesn't show the 'external' option and once a node is created without it there's no way to change it. The new GUI doesn't give any errors, it either undoes the change when you save or greys out the Save button and doesn't change it. Using the old GUI which you can still find on the Site Settings page shows the same error, Cannot open "/sites/targetsite": no such file or folder.

What is the issue? It may be a SharePoint architecture issue rather than PnP but some thoughts

  • Can -external be on by default. The property appears to be deprecated by MS, in the GUI its not an option so having it set automatically will remove this issue?
  • Why can't the target be found, the relative url looks right '/sites/targetsite' ?
  • If I'm giving the full url and not /sites/targetsite should it not be able to work out what to do slightly better?
What is the version of the Cmdlet module you are running?

3.1.0

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.