SharePoint  

Fixing Special-Character Folder Names and Applying Default Metadata in SharePoint Online Using CSOM

Introduction

Folders in SharePoint Online often fail to support default metadata when their names contain special characters such as: & :

These characters cause SharePoint to internally encode folder URLs, making features like default column values, MetadataDefaults, and PnP Set-PnPDefaultColumnValues fail silently or return errors.

For example, a folder named:

demo&123

Because of this encoding mismatch, SharePoint cannot correctly write values to:

client_LocationBasedDefaults.html

This article explains the complete process and provides a working PowerShell CSOM script that:



# -------------------------
# CONFIG
# -------------------------
$siteUrl     = "https://tenant.sharepoint.com/sites/xxx"
$listRelUrl  = "/sites/xxx/demolibrary"
$folderName  = "test&sites"     # No special characters allowed
$fieldName   = "location"     # Display Name (NOT internal name)
$fieldValue  = "India"        # Default Metadata Value

Connect-PnPOnline -Url $siteUrl -UseWebLogin -WarningAction Ignore;

$ctx = Get-PnPContext


$list = $ctx.Web.GetList($listRelUrl)
$ctx.Load($list)
$ctx.ExecuteQuery()

# -------------------------
# GET OR CREATE FOLDER
# -------------------------
$folder = $list.RootFolder.Folders.Add($folderName)
$ctx.Load($folder)
$ctx.ExecuteQuery()

# -------------------------
# SET DEFAULT METADATA USING MetadataDefaults
# -------------------------
$metadataDefaults = New-Object Microsoft.SharePoint.Client.DocumentManagement.MetadataDefaults($ctx, $list)

# Set default field value
$metadataDefaults.SetFieldDefault($folder, $fieldName, $fieldValue)

# Save metadata
$metadataDefaults.Update()
$list.Update()
$ctx.ExecuteQuery()

Write-Host "✔ Default folder metadata applied successfully!" -ForegroundColor Green