Create Permission Level and Group in Sharepoint using PowerShell Script

  1. Add-PSSnapin Microsoft.SharePoint.PowerShell   
  2. [xml]$xmldata=Get-Content ../XML/customgroups.xml  
  3.   
  4. $xmldata.CustomGroups  
  5.   
  6.   
  7. try  
  8. {  
  9. # Get data from XML  
  10. $site=Get-SPSite $xmldata.CustomGroups.siteinfo.siteurl    
  11. $web=$site.RootWeb  
  12. $owner= $xmldata.CustomGroups.siteinfo.owner  
  13.   
  14. foreach( $permissionlevel in $xmldata.CustomGroups.PermissionLevels.PermissionLevel)  
  15. {  
  16.     ##Role Definition for Custom Permission level  
  17.     $customPermissionLevel=New-Object Microsoft.SharePoint.SPRoleDefinition    
  18.     $customPermissionLevel.Name=  $permissionlevel.Name  
  19.     $customPermissionLevel.Description=$permissionlevel.Description  
  20.  
  21.     #Add Permissions, defined in XML  
  22.     $permissions= $permissionlevel.permissions  
  23.     $customPermissionLevel.BasePermissions="$permissions"  
  24.   
  25.     $web.RoleDefinitions.Add($customPermissionLevel);   
  26.   
  27.     Write-Host $permissionlevel.Name " Custom Permission Level is Created Successfully."   -ForegroundColor Green  
  28. }  
  29.  
  30.  
  31. #Add group in SharePoint Site  
  32. foreach( $Group in $xmldata.CustomGroups.Groups.Group)  
  33. {   
  34.   
  35.  $permissionLevel = $Group.PermissionLevelName;  
  36.  $groupName = $Group.GroupName;  
  37.    
  38. $web.SiteGroups.Add($Group.GroupName,$web.Site.Owner,$null,$Group.GroupDescription)  
  39.   
  40.             if ($web.SiteGroups[$Group.GroupName] -ne $null)  
  41.             {  
  42.                 #Add Permission for group  
  43.                 $group = $web.SiteGroups[$Group.GroupName]  
  44.                 $roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group)                  
  45.                  
  46.                 $roleDefinition = $web.RoleDefinitions[$permissionLevel];  
  47.                 $roleAssignment.RoleDefinitionBindings.Add($roleDefinition);  
  48.                 $web.RoleAssignments.Add($roleAssignment)  
  49.                 $web.Update()  
  50.                 Write-Host  "$groupName Custom Group is created with $permissionLevel permission level" -foregroundcolor Green  
  51.             }  
  52.             else  
  53.             {  
  54.                 Write-Host "$groupName Group does not exist." -foregroundcolor Red  
  55.             }  
  56. }  
  57.   
  58. $web.Dispose()    
  59. $site.Dispose()   
  60. }  
  61.   
  62. catch  
  63. {  
  64.   
  65. Write-Host "Error occured: $_" -ForegroundColor Red