web-dev-qa-db-fra.com

Création d'un groupe dynamique dans Active Directory avec des utilisateurs à partir d'une unité d'organisation

Je voudrais créer un groupe dynamique avec des utilisateurs d'une unité d'organisation spécifique dans mon Active Directory. Je peux parfaitement le faire en utilisant la liste de distribution dynamique Exchange, mais bien sûr, les Ex DDL ne sont que pour le courrier.

Il existe un moyen de créer cela? J'ai trouvé des guides utilisant System Center pour gérer cela, mais System Center n'est pas une option.

Merci d'avance,

8
Vinícius Ferrão

Il n'y a pas de groupe de sécurité dynamique dans Active Directory, seulement des groupes de distribution dynamique.

Pour ce faire, je pense que l'option la plus viable serait d'avoir un script Powershell déterminant qui sont dans l'unité d'organisation donnée et mettant à jour le groupe de sécurité en conséquence, peut-être comme ceci:

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
Mathias R. Jessen

Je réponds à ma propre question. Avec les idées PowerShell de Mathias, j'ai trouvé cela sur Internet:

https://github.com/davegreen/shadowGroupSync

Caractéristiques

  • Synchronisez les objets utilisateur ou ordinateur d'une ou plusieurs unités d'organisation vers un seul groupe.
  • Possibilité de filtrer les objets inclus dans le groupe fantôme à l'aide du filtre PowerShell Active Directory.
  • Possibilité de choisir le type de groupe fantôme (sécurité/distribution).

Le blog de l'auteur contient des informations supplémentaires sur la conception et les motifs de l'outil.

4
Vinícius Ferrão

Cela peut être fait avec Adaxes. Techniquement, il mettra à jour dynamiquement l'appartenance au groupe une fois les utilisateurs mis à jour/déplacés. Voici un exemple comment maintenir automatiquement l'appartenance à un groupe en fonction de l'attribut Department, mais il est très facile de le modifier pour faire la même chose en fonction de l'unité d'organisation. http://www.adaxes.com/tutorials_AutomatingDailyTasks_AddUsersToGroupsByDepartment.htm

3
Anton Pozdnyakov

Le moyen le plus simple consiste à utiliser DynamicGroup. http://www.firstattribute.com/en/active-directory/ad-automation/dynamic-groups/

Nous l'exécutons dans divers environnements après une migration de Novell vers Active Directory.

C'est un logiciel pour créer automatiquement des groupes OU, des groupes de départements, etc. Créez simplement le filtre et c'est tout.

1
Matthias

J'ai également cherché un moyen de créer des groupes de sécurité dynamiques dans Active Directory et suis arrivé à la conclusion en tant que Mathias. Ma solution n'était pas aussi élégante que la sienne, j'utilise un script PowerShell planifié pour supprimer tous les utilisateurs des groupes, puis les remplir avec les utilisateurs de l'unité d'organisation. De plus, je me suis assuré que les groupes de sous-unités d'organisation étaient ajoutés au groupe de sécurité des unités d'organisation parent où il se trouvait.

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"

Je ne sais pas si cela évolue bien dans une grande entreprise, mais le script ne prend que quelques minutes dans notre entreprise de 300 utilisateurs.

1
Espen Olsen

À la déclaration laissée par un autre membre. Si vous ne l'exécutez pas à partir d'un contrôleur de domaine, vous devrez fournir une entrée statique en remplaçant $ domainController ou vous pouvez en ajouter une autre, suivie de $ DomainController et transmettre ces informations.

Pour ajouter un utilisateur à un groupe

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"
 }
}

Pour supprimer un utilisateur, vous pouvez faire la même chose.

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"
 }
}

Maintenant, pour l'utiliser, vous pouvez le faire ...

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

ou

Il serait préférable d'avoir une UO d'utilisateurs désactivés ou quelque chose où cela peut avoir lieu ou si vous changez d'OU, comme un site ou un groupe

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