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 parameteresEmptyMask
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