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: https://pnp.github.io/powershell/cmdlets/Set-PnPTenantSite.html
Set-PnPTenantSite -Identity "https://contoso.sharepoint.com/sites/sales" -DenyAddAndCustomizePages:$false
Alan Trafford
Nov 29, 2016Brass 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