Sunday, October 28, 2012

Add permission level to sharepoint web site using powershell

Using following function you can create new pemission levels using powershell





function addPermissionLevel([string]$siteurl,[string]$permlevelname,[string]$desc,[string]$baseperms){
 $web = Get-SPWeb $siteurl  
 if($web -ne $null){
  if($web.RoleDefinitions[$permlevelname] -eq $null)
  {    
   $spRoleDefinition = New-Object Microsoft.SharePoint.SPRoleDefinition
   $spRoleDefinition.Name = $permlevelname;
   $spRoleDefinition.Description = $desc;    
   # Use the command [System.Enum]::GetNames("Microsoft.SharePoint.SPBasePermissions") to get a list of possible BasePermission values    
   $spRoleDefinition.BasePermissions = $baseperms;
   $web.RoleDefinitions.Add($spRoleDefinition)
   
   $chk = ($web.RoleDefinitions[$permlevelname])
   if($chk -ne $null){
    write-debug "Site definition $permlevelname addedd."
    return $true
   }else{
    write-debug "Site definition $permlevelname not addedd."
    return $false
   }    
   $web.Dispose()
  }else{
   write-warning "Site definition $permlevelname already exists !"
   $web.Dispose()
   return $true;
  } 
 }else{
  write-warning "Site does not exists !"
  return $false;
 }
}

Follwing list is the the different types of permission parameteres

EmptyMask
ViewListItems
AddListItems
EditListItems
DeleteListItems
ApproveItems
OpenItems
ViewVersions
DeleteVersions
CancelCheckout
ManagePersonalViews
ManageLists
ViewFormPages
Open
ViewPages
AddAndCustomizePages
ApplyThemeAndBorder
ApplyStyleSheets
ViewUsageData
CreateSSCSite
ManageSubwebs
CreateGroups
ManagePermissions
BrowseDirectories
BrowseUserInfo
AddDelPrivateWebParts
UpdatePersonalWebParts
ManageWeb
UseClientIntegration
UseRemoteAPIs
ManageAlerts
CreateAlerts
EditMyUserInfo
EnumeratePermissions
FullMask