Измените членство в группе Active Directory с PowerShell, если название учетной записи пользователя изменяется - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь использовать PowerShell для удаления пользователей из группы безопасности, если изменяется их заголовок учетной записи.

  • Название группы = Команда разработчиков
  • Название пользователя = Разработчик

Я хочу получить всех членов группы безопасности Development Team и, если они естьэтой группы есть заголовок, отличный от Developer, удалить пользователя из группы.

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

Этот сценарий удаляет всех членов группы, а не только тех, у которых заголовок пользователя не равен Developer.Как я могу изменить скрипт, чтобы удалить только пользователей с заголовком, не равным Developer?

Import-Module ActiveDirectory
$groupname = 'Development Team'
$members = Get-ADGroupMember -Identity $groupname

foreach($member in $members)
{
   if($member.title -notlike 'Developer')
   {
      Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
   }
}

Основываясь на информации из LisaJ ниже, это то, чтоновый скрипт выглядит так.Работает!

Import-Module ActiveDirectory
$groupname = 'Development Team'
$members = Get-ADUser -LDAPFilter "(&(!(title=Developer))(memberOf=cn=Development Team,ou=Security Groups,dc=domain,dc=com))"

foreach($member in $members)
{
    Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}

1 Ответ

1 голос
/ 22 марта 2019

Заголовок не является атрибутом, возвращаемым с помощью get-adgroupmember, поэтому все значения $ member.title не являются «Разработчиками», поскольку значение всегда равно null.Я бы использовал фильтр LDAP, например

Get-ADUser -LDAPFilter "(&(!(title=Developer))(memberOf=cn=Development Group,ou=groups,dc=example,dc=com))"

, чтобы определить учетные записи, которые необходимо удалить из группы.Этот фильтр возвращает набор пользователей, которые являются членами группы группы разработки (вам потребуется правильный полный DN для группы), но название которых не "Разработчик".Используйте foreach на те , чтобы удалить группу объявлений.

Вы также можете подготовить пользователей к группе, когда их заголовок становится разработчиком, используя

Get-ADUser -LDAPFilter "(&(title=Developer)(!(memberOf=cn=Development Group,ou=groups,dc=example,dc=com)))"

Для идентификации всех учетных записей, которые не являются членами "Группы разработки" ииметь «Разработчик» в качестве названия.

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