Forum Discussion
Alan Trafford
Nov 29, 2016Brass Contributor
How do I set DenyAddAndCustomizePages using PnP?
Hi Is there a way I can set DenyAddAndCustomizePages using PnP? I know it can be done using "SharePoint Online Management Shell" via the Set-SPOSite command. However, this command does not ex...
- 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
Alan Trafford
Brass Contributor
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.
Manidurai Mohanamariappan
Nov 29, 2016Iron Contributor
Try below script
$status = $null DO { Write-Host "Waiting... $status" Start-Sleep -Seconds 5 $Site=Get-PnPTenantSite -url https://<Tenantname>.sharepoint.com/sites/contosobeta -Detailed $status = $Site.Status } While ($status -ne 'Active')
- Alan TraffordNov 29, 2016Brass Contributor