sharepoint - 在 SharePoint 中获取所有网站、列表和用户权限

标签 sharepoint moss sharepoint-2007

是否可以使用代码获取 SharePoint 中网站的所有名称?具体来说,是否可以列出每个站点的列表的所有名称,并列出所有用户及其对列表的访问权限?

最佳答案

快速,肮脏,只是经过了一些测试,但它应该可以工作。将 Web 应用程序 URL 替换为您自己的 URL:

 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();
                }
            }
        }

关于sharepoint - 在 SharePoint 中获取所有网站、列表和用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2248211/

相关文章:

用于连接 Sharepoint Server 的 Java API

javascript - 检查 id 标签内的文本并将类添加到另一个标签

Sharepoint 查找列 - 日期格式

sharepoint - 我可以在 SharePoint 2007 中使用 .NET 4 吗?

sharepoint - 将MOSS '07站点从开发阶段推广到生产阶段

sharepoint - 正确实现带有回发的webpart?

sharepoint - 功能装订与站点定义

sharepoint - 使用 Web 服务保存共享点自定义 Web 部件时出现格式正确的 XML 错误

sharepoint - 如何修改共享点网站上的表格?

SharePoint - 无需手动解析即可获取计算字段的值