среда, 15 июля 2015 г.

Удаление привилегированных прав у пользователя во всем веб-приложении

После изменения должностных обязанностей одного сотрудника появилась необходимость удалить у него  повышенные права (полный доступ).
Руками решать эту задачу было бы очень долго...
прибегнул к PowerSell
данный скрип пробегает по всем сайтам в веб-приложении и удаляет от туда пользователя. После этого у пользователя остались права выданные через группы AD  и  через группу "ВСЕ"

cls
$login = 'i:0#.w|doman\user'
$app = Get-SPWebApplication http://url-app

foreach ($sites in $app.Sites)
{ 
    $collSite = $sites.AllWebs
    foreach ($web in $sites.AllWebs)
    {    


        # удаляем из всех групп            
        foreach($group in $web.Groups)
        {
            foreach($user in $group.Users )
            {
                if($user.UserLogin -eq $login)
                {
                    $web.Url
                    $userRemove = $web.AllUsers.Item($login)            
                    $group.RemoveUser( $userRemove)
                    Write-Host "Сайт -" $web.Title " / удален из группы -"  $group.Name -foregroundcolor Yellow
                }
            }
        }

        # удаляем из администраторов сайта
        $admins = $web.SiteAdministrators
        for ($i = 0 ; $i -le $admins.Count; $i++)
        {
            if( $admins[$i].UserLogin -eq $login)
            {
                $web.Url
                $userRemove = $web.AllUsers.Item($login)            
                $admins.RemoveByID( $userRemove.ID)
                Write-Host "Сайт -" $web.Title " / удален из администраторов сайта" -foregroundcolor blue
            }

        }
        $web.Dispose();
    }
}