none
Удалить пользователя из всех групп AD

    Вопрос

  • Задача простая - удалить пользователя из всех групп AD с помощь PowerShell

    Что пытался сделать:

    $userDN = dsquery user -samid $user -d $domain

    foreach ($group in $memberof)

    {

          if($group -and !$group.contains("CN=Domain Users"))

          {

                dsmod group $group -rmmbr $userDN -c

          }

    }

    При попытке выполнить скрипт все работает до тех пор пока не встречается пользователь состоящий в универсальной группе из другого домена. Тогда dsmod нам ругается, что такой пользователь не состоит в группе. Прочитал на сайте Microsoft, что это так и должно быть.

    Что ж, заменим dsmod group $group -rmmbr $userDN –c на Remove-ADGroupMember -Identity $group -Members $userDN -Confirm

    Получаем следующую ошибку:

    Remove-ADGroupMember : Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Active Directory Web Services running.

    Эта ошибка вполне логична, ведь у нас не установлен ADWS на контроллерах (чтобы его установить мне потребуется веское обоснование необходимости, а его у меня нет)

    Также пробовал метод описанный по ссылке http://social.technet.microsoft.com/Forums/en-GB/ITCG/thread/b37e937a-fec2-4c66-afb2-fbb4e80c1f17 но тоже не добился успеха. Вот ошибка:

    The following exception occurred while retrieving member "Remove": "Unknown error (0x80005000)"

    Теперь вопрос: можно ли каким либо образом выполнить мою задачу не устанавливае дополнительные компоненты на мой ПК либо на контроллер домена?

    12 января 2012 г. 15:01

Ответы

  • $User = [ADSI]"GC://cn=Jim Smith,ou=West,dc=MyDomain,dc=com"
    
    ForEach ($GroupDN In $User.memberOf)
    {
      Write-Host $User.ADsPath
      $Group = [ADSI]("LDAP://" + $GroupDN)
      $Group.Remove($User.ADsPath)
    }
    

    Посмотреть все ли группы отображаются корректно,на каких группах возникает ошибка.
    • Помечено в качестве ответа simtox 13 января 2012 г. 11:34
    13 января 2012 г. 8:33
    Отвечающий

Все ответы

  • Проблема возможно либо в неправильном пути или с учетными данными.

    А так посмотреть тему - Clear groups a user is member of - Multidomain environment

    12 января 2012 г. 15:41
    Отвечающий
  • Я account operator в обоих доменах. Пути правильные. Вот вывод команд ds:

    C:\Windows\System32>dsquery group -name "Print_Pk101"
    "CN=Print_Pk101,OU=Print Access,OU=Security Group,DC=moscow,DC=aton,DC=holding"

    C:\Windows\System32>dsquery user -name "testuserar*" -d alf
    "CN=TestUserARMalf,OU=User for kill,DC=alf,DC=aton,DC=holding"

    C:\Windows\System32>dsmod group "CN=Print_Pk101,OU=Print Access,OU=Security Group,DC=moscow,DC=aton,DC=holding" -rmmbr "CN=TestUse
    rARMalf,OU=User for kill,DC=alf,DC=aton,DC=holding"
    dsmod failed:CN=Print_Pk101,OU=Print Access,OU=Security Group,DC=moscow,DC=aton,DC=holding:The specified account name is not a member of the group.:CN=TestUserARMalf,OU=User for kill,DC=alf,DC=aton,DC=holding could not be removed from the group.
    type dsmod /? for help.

    C:\Windows\System32>dsquery user -name "testuserar*" -d alf | dsget user -memberof
    "CN=Print_Pk101,OU=Print Access,OU=Security Group,DC=moscow,DC=aton,DC=holding"

    Насколько я понимаю это правильное поведение команды dsmod group, хотя повторно найти статью, где это описывается, я не смог

    13 января 2012 г. 7:22
  • $User = [ADSI]"GC://cn=Jim Smith,ou=West,dc=MyDomain,dc=com"
    
    ForEach ($GroupDN In $User.memberOf)
    {
      Write-Host $User.ADsPath
      $Group = [ADSI]("LDAP://" + $GroupDN)
      $Group.Remove($User.ADsPath)
    }
    

    Посмотреть все ли группы отображаются корректно,на каких группах возникает ошибка.
    • Помечено в качестве ответа simtox 13 января 2012 г. 11:34
    13 января 2012 г. 8:33
    Отвечающий
  • Мне кажется у меня не отрабатывает уже на первой строчке.

    $user = [ADSI]"mosdc01://CN=TestUserARMalf,OU=User for kill,DC=alf,DC=aton,DC=holding"

    В выводе пусто. Если попытаться вывести так. GC на mosdc01 есть

    Write-Host $user

    Выводится только это

    System.DirectoryServices.DirectoryEntry

    13 января 2012 г. 10:51
  • Мне кажется у меня не отрабатывает уже на первой строчке.

    $user = [ADSI]"mosdc01://CN=TestUserARMalf,OU=User for kill,DC=alf,DC=aton,DC=holding"

    В выводе пусто. Если попытаться вывести так. GC на mosdc01 есть

    Write-Host $user

    Выводится только это

    System.DirectoryServices.DirectoryEntry


    Синтаксис не надо придумывать.

    $user = [ADSI]"GC://CN=TestUserARMalf,OU=User for kill,DC=alf,DC=aton,DC=holding"
    
    ForEach ($GroupDN In $User.memberOf)
    {
      Write-Host $User.ADsPath
    }
    
    

    13 января 2012 г. 11:02
    Отвечающий
  • Спасибо, за исправление. Теперь все заработало без ошибок.

    13 января 2012 г. 11:34
  • Прошу помощи

    Не стал заводить новую тему - задача в общем схожая.

    необходимо удалить пользователя доверенного домена из группы безопасности (avd3 user).

    $remove = get-content "c:\test.txt"
    $remove | foreach {
      $user = get-aduser -Server "nnn.ttt.corp" -Identity "$($_)"
      $group = get-adgroup -Identity "avd3 user"
      $user
            $User = [ADSI]"LDAP://$($user.DistinguishedName)"
          
    $User
     $Group = [ADSI]"LDAP://$($group.DistinguishedName)"

    $Group
    Write-Host $User.ADsPath
    Write-Host $Group.ADsPath

    $Group.remove($User.ADsPath)
    }

    При запуске ошибка:

    Исключение при вызове "remove" с "1" аргументами: "Сервер не склонен обработать запрос. (Исключение из HRESULT: 0x80072
    035)"
    C:\remote.ps1:14 знак:14
    + $Group.remove <<<< ($User.ADsPath)
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI


    • Изменено Dmitry81 12 февраля 2018 г. 11:16
    12 февраля 2018 г. 11:16