使用Powershell获取网站权限

时间:2018-06-06 13:58:50

标签: powershell sharepoint user-permissions

我正试图弄清楚如何使用Powershell获得众所周知的网站权限列表。我尝试了几种方法。在我看来,最好的解决方案是尝试类似$spWeb.RoleAssignments的内容,但这不仅为我提供了 spweb 上具有 ist 权限的用户和群组。我还从网站上的唯一列表和库中获得角色分配。

您是否有建议我如何过滤以检查用户是否具有 spweb 的读取权限(不考虑列表和子网站)?

我的目标是逐步检查用户(组)的 spweb ist 子网站以及唯一列表和库,例如" NT AUTHORITY \ Authenticated用户&#34 ;.然后我想删除角色分配并向一组同事添加一个新的角色分配,这样每个人都不能看到内容。 uniqe权限结构应该保留。

1 个答案:

答案 0 :(得分:0)

您可以使用SPWeb.DoesUserHavePermissions方法检查用户是否具有特定权限级别:

public bool DoesUserHavePermissions(     字符串登录,     SPBasePermissions permissionMask )

SPWeb.DoesUserHavePermissions method (String, SPBasePermissions)

    using (SPSite site = new SPSite("http://sp/"))
    {
        using (SPWeb web = site.OpenWeb())
        {
            // Make sure the current user can enumerate permissions.
            if (web.DoesUserHavePermissions(SPBasePermissions.EnumeratePermissions))
            {
                // Specify the permission to check.
                SPBasePermissions permissionToCheck = SPBasePermissions.ViewListItems;
                Console.WriteLine("The following users have {0} permission:", permissionToCheck);

                // Check the permissions of users who are explicitly assigned permissions.
                SPUserCollection users = web.Users;
                foreach (SPUser user in users)
                {
                    string login = user.LoginName;
                    if (web.DoesUserHavePermissions(login, permissionToCheck))
                    {
                        Console.WriteLine(login);
                    }
                }
            }
        }
    }
    Console.ReadLine();