Share via


SharePoint 2013: Create a custom permissions using PowerShell

Below is the PowerShell Script:

$spSite = Get-SPSite "http://sedwdevrtm:432/sites/com"[xml]$file = Get-Content "C:\Users\Administrator\Desktop\XML\XmlSitePermissions.xml"$Permissionname = $file.sites.site.sitepermission$Permission = $file.sites.Permission.Permissions$spWeb = $spSite | Get-SPWebWrite-Host($spWeb)# we add a new Permission Level name "DotcomReadonly" to the site, which will allow users to only add new items (no editing or removing)# check to see if the permission your are going to add is already existing.. if null proceed#foreach ($folder in $Permissionname)for($i=0; $i -lt $Permissionname.count; $i++){Write-Host ($Permissionname[$i])if($spWeb.RoleDefinitions[$Permissionname[$i]] -eq $null){    $spRoleDefinition = New-Object Microsoft.SharePoint.SPRoleDefinition         $spRoleDefinition.Name = $Permissionname[$i]    $spRoleDefinition.Description = $Permission[$i]     #$spRoleDefinition.BasePermissions = "ViewListItems, AddListItems, Open, ViewPages"    $spRoleDefinition.BasePermissions = $Permission[$i]    $spweb.RoleDefinitions.Add($spRoleDefinition)    }}$spWeb.Dispose()$spSite.Dispose()

will read the permissions from below xml file

<?xml version="1.0"?>
<sites>
<site>
<sitepermission>DotcomReadonly</sitepermission>
<sitepermission>DotcomContribute</sitepermission>
<sitepermission>DotcomSiteAdministrator</sitepermission>
</site>
<Permission>
        <Permissions>ViewListItems,AddListItems,Open,ViewPages</Permissions>
        <Permissions>ViewListItems,AddListItems,OpenItems,Open,ViewPages</Permissions>
        <Permissions>ManageLists</Permissions>
    </Permission>
</sites>