Forum Discussion
How do I set DenyAddAndCustomizePages using PnP?
- Apr 27, 2023
Alan Trafford This site will help you: Set-PnPTenantSite | PnP PowerShell
Set-PnPTenantSite -Identity "https://contoso.sharepoint.com/sites/sales" -DenyAddAndCustomizePages:$false
I've got it working with PnP, but with a small issue.
Clear-Host Import-Module -Name SharePointPnPPowerShellOnline -DisableNameChecking # Shorten name! $DenyAddAndCustomizePagesStatusEnum = [Microsoft.Online.SharePoint.TenantAdministration.DenyAddAndCustomizePagesStatus] Connect-PnPOnline -Url 'https://<private>-admin.sharepoint.com/' -Credentials (Get-Credentials) $context = Get-PnPContext $site = Get-PnPTenantSite -Detailed -Url 'https://<private>.sharepoint.com/' $site.DenyAddAndCustomizePages = $DenyAddAndCustomizePagesStatusEnum::Disabled $site.Update() $context.ExecuteQuery() Get-PnPTenantSite -Detailed -Url 'https://<private>.sharepoint.com/' | select url,DenyAddAndCustomizePages Disconnect-PnPOnline
The above works, but if I run it twice within about 30 seconds, changing the value, I get the following error:
Exception calling "ExecuteQuery" with "0" argument(s): "Cannot set properties on site https://<private>.sharepoint.com/ because the site is not currently available." At line:26 char:1 + $context.ExecuteQuery() + ~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ServerException
This is becuase the previous update has not yet finished. I've tried putting a pause in using the following code (between the Update and ExecuteQuery), but it does not seem to get the updated value for the 'Status' field:
# Wait for site to become available $status = $null while ($status -ne 'Active') { Write-Host "Waiting... $status" Start-Sleep -Seconds 5 $context.Load($site) $status = $site.Status }
Unfortunately, the loop never exits. Any ideas?
Thanks.
Thanks Alan Trafford. How about on a site collection Get-PnPSite rather than Get-PnPTenantSite (using PnP)? This site collection setting is available via SPO but seems to be unavailable on PnP.
- Kruthi25Jul 18, 2019Copper Contributor
I have a similar request. And i am looking for a PnP script to enable custom script for one single site collection. Could you please further help with this?
Jeff Border wrote:Thanks Alan Trafford. How about on a site collection Get-PnPSite rather than Get-PnPTenantSite (using PnP)? This site collection setting is available via SPO but seems to be unavailable on PnP.
Jeff Border wrote:Thanks Alan Trafford. How about on a site collection Get-PnPSite rather than Get-PnPTenantSite (using PnP)? This site collection setting is available via SPO but seems to be unavailable on PnP.