The SharePoint property bag is a hash table, which is used to store data in key-value pairs and it is a good place to store and retrieve meta-data or custom properties. We can set and get property bag value using CSOM or SharePoint Online PnP cmdlets. In this post, I am going to share steps to update property bag value using PnP Powershell Module.
Before proceed, install the SharePoint PnP PowerShell Online module by running below command.
Install-Module SharePointPnPPowerShellOnline -Force
Run the below command to connect the site with PnPOnline Powershell.
$SiteURL = "https://MyTenant.sharepoint.com/sites/testsite" Connect-PnPOnline $SiteURL
Once you have connected the required site, run the below command to set the required property value.
Set-PnPPropertyBagValue -Key "myCustomProperty" -Value "customValue"
The above command works without any issue if the site setting NoScript disabled, or else you will get the below error message.
Set-PnPPropertyBagValue : Site has NoScript enabled, and setting property bag values is not supported At line:1 char:1 + Set-PnPPropertyBagValue -Key "myCustomProperty" -Value "customValue" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (SharePointPnP.P...ropertyBagValue:SetPropertyBagValue) [Set-PnPProper tyBagValue], Exception + FullyQualifiedErrorId : NoScriptEnabled,SharePointPnP.PowerShell.Commands.SetPropertyBagValue
To disable the NoScript setting, we need to set the property DenyAddAndCustomizePages as Disabled. Run the below command to disable NoScript setting for the given site.
$site = Get-PnPTenantSite -Detailed -Url $SiteURL $site.DenyAddAndCustomizePages = 'Disabled' $site.Update() $site.Context.ExecuteQuery()
— OR — You can also use the below command to set this value using Set-PnPTenantSite cmdlet in modern SharePoint sites.
Set-PnPTenantSite -Url $SiteURL -NoScriptSite:$false
Now run the below command to re-connect the site and set the required property bag value.
Connect-PnPOnline $SiteURL Set-PnPPropertyBagValue -Key "myCustomProperty" -Value "customValue"
Get Property Bag value:
Use the below command to get the configured property value.
Get-PnPPropertyBag -Key "myCustomProperty"
Remove Property Bag value:
Run the below command to delete an existing property.
Remove-PnPPropertyBagValue -Key "myCustomProperty" -Force