SharePointOnline-ScriptSamples icon indicating copy to clipboard operation
SharePointOnline-ScriptSamples copied to clipboard

SharePoint Online Site Policy

Open Abhijeet1719 opened this issue 2 years ago • 7 comments

@PowershellScripts I have created site policy in content type hub and trying to apply site policy to site collection using powershell but its not applying. I am able to activate at site collection level but not able to apply it. I tried it with another approach i.e applied it manually and then remove it and after that I tried with powershell it worked...bt I want to applied it without manually activating and de activating. Can anyone please suggest? Also, Our tenancy has multiple site collections and webs, and all have a Site Policy applied. I've now been asked to remove the policy from all sites. Doing it manually is not an option.

Is there a CSOM or PnP command or snippet I can execute via PowerShell that will allow me to remove a Site Policy from a site?

Abhijeet1719 avatar Apr 07 '22 04:04 Abhijeet1719

Hi @Abhijeet1719

Have a look at https://github.com/PowershellScripts/SharePointOnline-ScriptSamples/tree/develop/Site%20Management/Site%20Policy/RemovePolicy

I wrote that one for you

It is still in the testing phase, so please let me know what you think and how it is working for you

PowershellScripts avatar Apr 18 '22 18:04 PowershellScripts

Hi @Abhijeet1719

Have a look at https://github.com/PowershellScripts/SharePointOnline-ScriptSamples/tree/develop/Site%20Management/Site%20Policy/RemovePolicy

I wrote that one for you

It is still in the testing phase, so please let me know what you think and how it is working for you

@PowershellScripts Thanks for this..

but I am getting error with this script.

Please find attached screenshot. image

https://social.technet.microsoft.com/Forums/office/en-US/d3d86389-6be7-48ec-ad09-1e30968255a6/unable-to-remove-a-readonly-content-type-from-a-list-or-library?forum=sharepointadminprevious

Abhijeet1719 avatar Apr 19 '22 09:04 Abhijeet1719

That's good feedback. I'm guessing it comes from the fact that you published the content type from the content type hub. Let me try to simulate that and I will see what can be done.

PowershellScripts avatar Apr 19 '22 09:04 PowershellScripts

@Abhijeet1719 What do you get when you try Get-PnPPolicy on the site?

PowershellScripts avatar Apr 19 '22 14:04 PowershellScripts

@PowershellScripts I tried below command but same error... Get-PnPSitePolicy -Name $PolicyName

Abhijeet1719 avatar Apr 20 '22 04:04 Abhijeet1719

@PowershellScripts Another strange thing is I am trying to run below script to apply policy using powershell but i am not able to apply it. I applied- removed it manually and then again I tried to apply using script its worked. So first you have to manually apply it then only its working. For new site collection where I didnt apply manually for that site collection below script is not working.

-------Script--------- Import-Module SharePointPnPPowerShellOnline

#Reading CSV $filePath = $PSScriptRoot + "\SiteURL.csv" $CSVData = Import-Csv -LiteralPath $filePath

foreach ($row in $CSVData) { $SiteUrl = $row.Site #$cred= Get-Credential #Add-PnPStoredCredential -Name $SiteName -Username $cred.UserName -Password $cred.Password $connection = Connect-PnPOnline -Url $SiteUrl -UseWebLogin

$PolicyName= "SPOSitePolicy"

#Call the function to apply site policy

Apply-PnPSitePolicy -SiteUrl $SiteUrl -PolicyName $PolicyName

}

#Apply Site Policy for a Site collection Function Apply-PnPSitePolicy([String]$SiteUrl, [String]$PolicyName) { #Connect to the Site try { Connect-PnPOnline -Url $SiteUrl -UseWebLogin $ContentTypeID = "0x010085EC78BE64F9478AAE3ED069093B9963" #Check if "Site Policy" Feature is active $SitePolicyFeature = Get-PnPFeature -Identity "2fcd5f8a-26b7-4a6a-9755-918566dba90a" -Scope Site -Web $SiteUrl If($SitePolicyFeature.DefinitionId -eq $null) { #Activate "Site Policy" Feature for the site collection Enable-PnPFeature -Identity "2fcd5f8a-26b7-4a6a-9755-918566dba90a" -Scope Site Write-Host "Site Policy Feature is Activated at $($SiteUrl)" -ForegroundColor Green #Start-Sleep 30 }

    #Get Policy to Activate
    $SitePolicyToActivate = Get-PnPSitePolicy -Name "SPOSitePolicy"
   # $SitePolicyToActivate = Get-PnPSitePolicy -AllAvailable

   # $SitePolicyToActivate = Get-PnPContentType | where {($_.Id -match $ContentTypeID) -and ($_.Id -notlike $ContentTypeID)} | select name, id

    foreach($sitePolicy in $SitePolicyToActivate)
    {
        Write-Host "Policy name-" $sitePolicy.Name
    }
    
    If ($SitePolicyToActivate)
    {            
        #Remove content type
       # Remove-PnPContentType -Identity $PolicyName -Force
        
        #Apply Site Policy
        Set-PnPSitePolicy -Name $SitePolicyToActivate.Name
        
        #Close the site
        Set-PnPSiteClosure -State Closed

        Write-Host "Site Policy Applied to $($SiteUrl)" -ForegroundColor Green
    }
    Else
    {
        write-Host "Site Policy '$($PolicyName)' not found in Site $($SiteUrl)" -ForegroundColor Yellow
    }
}
catch
{
    $e = $_.Exception   
        $line = $_.InvocationInfo.ScriptLineNumber   
        $msg = $e.Message   
        Write-Host –ForegroundColor Red "Caught Exception: $e at $line"   
        Write-Host $msg   
        Write-Host "Something went wrong"  
}

}

Abhijeet1719 avatar Apr 20 '22 05:04 Abhijeet1719

@PowershellScripts HI Do u have update for me?

Thanks....

Abhijeet1719 avatar Apr 26 '22 09:04 Abhijeet1719