Как получить отдельных пользователей от сайта и его под-сайтов? - PullRequest
2 голосов
/ 09 ноября 2010

Я получил требование от клиента, что он хочет знать информацию о пользователях с разных сайтов, и это те сайты, которые имеют доступ к сайту. Для каждого дочернего сайта существуют отдельные группы (вклад, утверждение и полный доступ). Из всех этих групп можно найти различную информацию о пользователях.

Как мы можем сделать это, используя объектную модель? Пожалуйста, помогите мне.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 09 августа 2012

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 голос
/ 09 ноября 2010

Это одно из тех самых общих требований, которое очень быстро становится очень сложным. Похоже, они пытаются создать какой-то аудит безопасности.

Если вы предполагаете, что на каждом сайте есть только группы SharePoint, заполненные пользователями SharePoint, и все наследует разрешения, тогда это будет немного проще. Вы можете рекурсивно перебирать каждый SPWeb (и дочерний SPWeb в каждом SPWeb), чтобы найти все SPGroups . Затем, используя словарь, вы будете отслеживать найденных пользователей и уровень их разрешений. Их уровень разрешений определяется их членством в группе, и вы, вероятно, будете использовать web.RoleAssignments.GetAssignmentByPrincipal(group) ( GetAssignmentByPrincipal ) для получения списка назначений (например: Read, Contribute и т. Д.).

Однако сценарий, вероятно, НЕ тот, что есть у вашего клиента. О чем нужно подумать (некоторые легче преодолеть, чем другие):

  • Что происходит, когда пользователь существует в нескольких группах на одном сайте?
  • Пользователи с индивидуальными правами доступа к сайту?
  • Нарушено наследование разрешений на уровне SPWeb? Как насчет списка разрешений? Пункт разрешений? Что происходит, когда вы видите ограниченный доступ?
  • Группы AD используются где-нибудь? Нужно ли перечислять всех пользователей в каждой группе AD? А как насчет специальных групп, таких как «ВСЕ АВТОРИЗОВАННЫЕ ПОЛЬЗОВАТЕЛИ»?

Реально, очень сложно написать точный аудит безопасности. Лучшее решение для этого, вероятно, состоит в том, чтобы найти кого-то, кто знаком с настройкой безопасности, проходящей через каждый сайт, чтобы исправить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...