Get all sites, lists, and user permissions in SharePoint

Can I use the code to get all the site names in SharePoint? In particular, is it possible to list all list names for each site and list all users and their access to lists?

+4
source share
1 answer

Fast, dirty, only a little tested, but it should work. Replace the web application URL with your own:

static void ListLists() { SPWebApplication webApp = SPWebApplication.Lookup(new Uri("http://mossdev:8060")); foreach(SPSite site in webApp.Sites) { try { PrintWebAndListsRecursive(site.RootWeb, 0); } finally { site.Dispose(); } } Console.ReadLine(); } static void PrintWebAndListsRecursive(SPWeb web, int level) { Console.WriteLine("".PadLeft(level * 3) + "Site: {0} ({1})", web.Title, web.Url); foreach(SPList list in web.Lists) { Console.WriteLine("".PadLeft((level + 1) * 3) + "List: {0}", list.Title); foreach(SPRoleAssignment roleAssignment in list.RoleAssignments) { if(roleAssignment.Member is SPGroup) { var group = (SPGroup) roleAssignment.Member; Console.WriteLine("".PadLeft((level + 2) * 3) + "Group: {0}", group.Name); foreach(SPUser user in group.Users) { Console.WriteLine("".PadLeft((level + 4) * 3) + user.Name); } } else { Console.WriteLine("".PadLeft((level + 2) *3) + "User: {0}", roleAssignment.Member.Name); } foreach(SPRoleDefinition roleDef in roleAssignment.RoleDefinitionBindings) { if (!roleDef.Hidden) { Console.WriteLine("".PadLeft((level + 3) * 3) + "Role Definition: {0}", roleDef.Name); } } } } foreach(SPWeb subWeb in web.Webs) { try { PrintWebAndListsRecursive(subWeb, level+1); } finally { subWeb.Dispose(); } } } 
+8
source

Source: https://habr.com/ru/post/1301052/


All Articles