我得到了客户的要求,他希望了解来自网站的不同用户信息以及可以访问网站的子网站。每个子站点都有单独的组(贡献,批准和完全访问)。从这些组中可以找到不同的用户信息。
我们如何使用对象模型来做到这一点?请帮帮我。
提前致谢。
答案 0 :(得分:2)
SharePoint 2010 - 当有人询问谁拥有对网站的权限时,我经常使用此PowerShell脚本。这不包括直接授予权限的用户或网站集管理员,但它仍然有用。
您必须在SP2010服务器上运行它。
#Get a list of groups in a site, then a list of people in each group
Add-PSSnapIn Microsoft.SharePoint.PowerShell
$spWeb = "http://sharepoint/site/"
foreach($group in ((Get-SPWeb $spWeb).Groups)){
foreach($user in $Group.Users)
{$group.Name + " - " + $user.Name
}
}
答案 1 :(得分:1)
这是非常一般的要求之一,很快就变得非常困难。听起来他们正试图创建某种安全审计。
如果您假设每个站点只有SharePoint组充满了SharePoint用户,并且所有内容都是继承权限,那么它更容易小。您可以递归迭代每个SPWeb(以及每个SPWeb中的子SPWeb)以查找所有SPGroups。然后,使用词典,您将跟踪您找到的用户及其权限级别。他们的权限级别取决于他们在群组中的成员资格,您可能会使用web.RoleAssignments.GetAssignmentByPrincipal(group)
(GetAssignmentByPrincipal)来获取作业列表(例如:阅读,贡献等)。
但是,该方案可能不是您的客户所拥有的。要考虑的事情(有些比其他人更容易克服):
实际上,编写准确的安全审计非常困难。对此最好的解决方案可能是找到一个熟悉如何通过每个站点设置安全性来修复它们的人。