The following example returns all the Groups with permissions associated to the SharePoint Web using Managed Client Side Object Model.
After creating a console application project in Visual Studio solution, add the following assembly references to the project.
Microsoft.SharePoint.Client
Microsoft.SharePoint.Client.Runtime
- using Microsoft.SharePoint.Client;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Text;
- namespace GetWebGroups
- {
- class Program
- {
- static void Main(string[] args)
- {
- //Get Site Url fro user
- Console.Write("Enter Site URL: ");
- string strURL = Console.ReadLine();
- //Get Username from user in the format of (Domain/Login ID)
- Console.Write("Enter UserName (domain/userid): ");
- string strUserName = Console.ReadLine();
- Console.Write("Enter your password: ");
- string pass = getPassword();
- Console.WriteLine();
- ClientContext ctx = new ClientContext(strURL);
- ctx.Credentials = new NetworkCredential(strUserName, pass);
- Web web = ctx.Web;
- //Parameters to receive response from the server
- //RoleAssignments property should be passed in Load method to get the collection of Groups assigned to the web
- ctx.Load(web, w => w.Title);
- RoleAssignmentCollection roleAssignments= web.RoleAssignments;
- //RoleAssignment.Member property returns the group associated to the web
- //RoleAssignement.RoleDefinitionBindings property returns the permissions associated to the group for the web
- ctx.Load(roleAssignments, roleAssignement => roleAssignement.Include(r => r.Member, r => r.RoleDefinitionBindings));
- ctx.ExecuteQuery();
- Console.WriteLine("Groups has permission to the Web: " + web.Title);
- Console.WriteLine("Groups Count: " + roleAssignments.Count.ToString());
- Console.WriteLine("Group with Permissions as follows:");
- foreach (RoleAssignment grp in roleAssignments)
- {
- string strGroup = "";
- strGroup += grp.Member.Title +" : ";
- foreach (RoleDefinition rd in grp.RoleDefinitionBindings)
- {
- strGroup += rd.Name+ " ";
- }
- Console.WriteLine(strGroup);
- }
- Console.Read();
- }
- private static string getPassword()
- {
- ConsoleKeyInfo key;
- string pass = "";
- do
- {
- key = Console.ReadKey(true);
- // Backspace Should Not Work
- if (key.Key != ConsoleKey.Backspace && key.Key != ConsoleKey.Enter)
- {
- pass += key.KeyChar;
- Console.Write("*");
- }
- else
- {
- if (key.Key == ConsoleKey.Backspace && pass.Length > 0)
- {
- pass = pass.Substring(0, (pass.Length - 1));
- Console.Write("\b \b");
- }
- }
- }
- // Stops Receving Keys Once Enter is Pressed
- while (key.Key != ConsoleKey.Enter);
- return pass;
- }
- }
- }

Santhakumar MunuswamyPosted Sep 26, 2015, 12:40 PM
Nice share