我正试图弄清楚如何使用Powershell获得众所周知的网站权限列表。我尝试了几种方法。在我看来,最好的解决方案是尝试类似$spWeb.RoleAssignments
的内容,但这不仅为我提供了 spweb 上具有 ist 权限的用户和群组。我还从网站上的唯一列表和库中获得角色分配。
您是否有建议我如何过滤以检查用户是否具有 spweb 的读取权限(不考虑列表和子网站)?
我的目标是逐步检查用户(组)的 spweb 和 ist 子网站以及唯一列表和库,例如" NT AUTHORITY \ Authenticated用户&#34 ;.然后我想删除角色分配并向一组同事添加一个新的角色分配,这样每个人都不能看到内容。 uniqe权限结构应该保留。
答案 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();