How to Set Property Bag Value in SharePoint Online using Powershell

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

Advertisement

Leave a Comment