Создание Динамической Группы в Active Directory с пользователями от OU

Видение эту точную проблему прежде, и ожидание в течение ночи, чтобы кэш разрешения истек без радости, возвратив Банк сообщений, работало на меня.

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

Поток adminSDHolder был создан Microsoft по причине, и изменение ее поведения просто подрывает целый процесс. / мыльница

8
задан 16 March 2013 в 06:56
6 ответов

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

Для достижения этой цели, я думаю, наиболее жизнеспособным вариантом было бы наличие сценария Powershell, определяющего, кто находится в данной OU, и соответствующего обновления группы безопасности, может быть так:

Import-Module ActiveDirectory
$groupname = PseudoDynamicGroup
$users = Get-ADUser -Filter * -SearchBase "ou=desiredUsers,dc=domain,dc=tld"
foreach($user in $users)
{
  Add-ADGroupMember -Identity $groupname -Member $user.samaccountname -ErrorAction SilentlyContinue
}
$members = Get-ADGroupMember -Identity $groupname
foreach($member in $members)
{
  if($member.distinguishedname -notlike "*ou=desiredUsers,dc=domain,dc=tld*")
  {
    Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
  }
}
11
ответ дан 2 December 2019 в 22:45

Я отвечаю на свой вопрос. С идеями PowerShell Матиаса я нашел это в Интернете:

https://github.com/davegreen/shadowGroupSync

Features

  • Синхронизация объектов пользователя или компьютера из одного или нескольких подразделений в одну группу .
  • Возможность фильтрации объектов, включенных в теневую группу, с помощью PowerShell Active Directory Filter.
  • Возможность выбора типа теневой группы (Безопасность / Распространение).

Блог автора содержит дополнительную информацию о конструкции и мотивах изготовления инструмента.

4
ответ дан 2 December 2019 в 22:45

Я также искал способ создания динамических групп безопасности в Active Directory и пришел к выводу как Матиас. Мое решение было не таким элегантным, как его, я использую запланированный сценарий PowerShell, чтобы удалить всех пользователей из групп, а затем заполнить их пользователями в OU. Кроме того, я удостоверился, что группы дочерних подразделений были добавлены в группу безопасности родительских подразделений, где они были.

import-module ActiveDirectory
Get-ADGroupMember OU_GroupName | % { Remove-ADGroupMember 'OU_GroupName' -Members $_ -Confirm:$false}
Get-ADUser -SearchBase 'OU=OUName,OU=ParentOUName,DC=DomainName,DC=TopDomainName' -Searchscope 1 -Filter * | % { Add-ADGroupMember 'OU_GroupName' -Members $_ }
Add-ADGroupMember -Identity "OU_ParentName" -Members "OU_ChildOneName", "OU_ChildTwoName", "OU_ChildThreeName"

Не уверен, хорошо ли это масштабируется в большой компании, но сценарий использует только несколько минут в нашей компании из 300 пользователей. .

1
ответ дан 2 December 2019 в 22:45

Это можно сделать с помощью Adaxes. Технически он будет динамически обновлять членство в группе после обновления / перемещения пользователей. Вот пример того, как автоматически поддерживать членство в группе на основе атрибута отдела, но его очень легко изменить, чтобы сделать то же самое на основе OU. http://www.adaxes.com/tutorials_AutomatingDailyTasks_AddUsersToGroupsByDepartment.htm

3
ответ дан 2 December 2019 в 22:45

Самый простой способ - использовать DynamicGroup. http://www.firstattribute.com/en/active-directory/ad-automation/dynamic-groups/

Мы запускаем его в различных средах после перехода с Novell на Active Directory.

Это программное обеспечение для автоматического создания групп OU, групп отделов и так далее. Просто создайте фильтр и все.

1
ответ дан 2 December 2019 в 22:45

К утверждению, оставленному другим участником. Если вы не запускаете это из контроллера домена, вам нужно будет либо предоставить статическую запись, заменив $ domainController, либо вы можете добавить другую, за которой следует $ DomainController и передать эту информацию.

Чтобы добавить пользователя в группа

Function AddUserToGroup($Group, $User, $DomainController)
{
 if(!(Get-ADGroupMember -Identity $group | ?{$_.name -eq $User}))
 {
  Add-ADGroupMember -Identity $group -Members $User -Server $DomainController
 }
 else
 {
  return  "The user: $User is already in the $group"
 }
}

Чтобы удалить пользователя, вы можете сделать то же самое.

Function RemoveUserFromGroup($Group, $User, $DomainController)
{
 if((Get-ADGroupMember -Identity $group | ?{$_.name -eq $User}))
 {
  Remove-ADGroupMember -Identity $group -Members $User -Server $DomainController
 }
 else
 {
  return "The user: $User is not a member of $group"
 }
}

Теперь, чтобы использовать это, вы можете сделать это ...

$Users = Get-Aduser -Filter *
Foreach($user in $users)
{
  AddUserToGroup "SomeGroup" $user.name "ServerName"  
}

или

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

$Users = Get-Aduser -Filter * 
Foreach($user in $users)
{
  RemoveUserToGroup "SomeGroup" $user.name "ServerName"  
}
0
ответ дан 2 December 2019 в 22:45

Теги

Похожие вопросы