среда, 11 декабря 2013 г.

Удаление пользователей из конкретной группы пользователей с помошью PowerShell


Сегодня я расскажу, как я решил задачу по удалению пользователей и конкретной группы SharePoint. Дело в том, что в данный момент администрирую коробочное решение документооборота. В коробочном решении,  лицензии, отслеживаются по количеству пользователей в определённой группе. Когда пользователей далеко за 300, то искать и удалять пользователей из группы стандартными средствами весьма долго. Решил написать скрипт.
Он проверяет группу на разных сайтах (семействах) и если пользователь имеется в группе, то спрашивает, удалять пользователя  или нет. 




#Перечень сайтов, в которых нужно произвести действия, адреса через запятую
$arraySite =
"http://server/site"
  
#Перечень пользователей, которых нужно удалить через запятую
$arraryUser =                                           

"domain\S.Abramov",
"domain\V.Kozin"


foreach ($site in $arraySite)
{
 $site = Get-SPWeb $site
 $namegroup = "Участники  SharePoint"  #Название проверяемой группы
       
 write-host ""$site":"
 if ($site.SiteGroups["$namegroup"] -ne $null)
 {
    write-host проверяемая группа - ""$namegroup" ." -foregroundcolor Green
    foreach ($username in $arraryUser)
    {
     $group = $site.SiteGroups["$namegroup"]
     if ($group.Users["$username"] -ne $null)
     {
      write-host "пользователь "$username" есть." -foregroundcolor red
     
      $delet = Read-Host "Удалить пользователя да [д] или нет [н]"
      if ($delet -eq "д")
      {
      $User = $group.Users["$username"]                                  
      $group.RemoveUser($User)                                   
      write-host "пользователь "$username" удален" -foregroundcolor  Yellow
      }
      else
      {
     write-host "пользователь "$username" не удален" -foregroundcolor  Blue
      }

     }
     else
     {
   write-host "пользователя "$username" нет в группе." -foregroundcolor  Yellow
     }
    }
 }
 else
 {
 write-host ""$namegroup" - группы нет." -foregroundcolor red
 }
 $site.Dispose()
}



Да не самое удобное средство, но все же. Неудобство в том , что нужно знать учетные записи пользователя.

Надеюсь, что данная статья будет Вам полезна.