Lors de la gestion d’Active Directory, notamment dans les grandes configurations, il est fréquent de devoir copier les appartenances aux groupes d’un utilisateur à un autre, par exemple lors de l’intégration d’un nouvel employé ou de la réorganisation d’équipes. Effectuer cette opération manuellement dans la console ADUC peut s’avérer fastidieux, surtout si un utilisateur fait partie de nombreux groupes. C’est pourquoi l’utilisation de scripts PowerShell est la solution idéale. Elle permet de gagner du temps, de réduire les erreurs et, de manière générale, d’être plus efficace une fois maîtrisée. De plus, si vous gérez plusieurs utilisateurs, l’automatisation par scripts simplifie considérablement le travail.
En pratique, c’est assez simple : récupérez la liste des groupes de l’utilisateur source, puis ajoutez ces mêmes groupes à l’utilisateur cible. C’est très pratique lorsqu’un employé quitte un service et que son remplaçant a besoin des mêmes accès. L’important est de vérifier que votre compte dispose des autorisations nécessaires pour modifier les appartenances aux groupes ; sinon, PowerShell générera une erreur. Si vous exécutez ces commandes, assurez-vous d’être connecté avec un compte d’administrateur de domaine ou des privilèges délégués.
Car, bien sûr, Windows complique parfois les choses inutilement. Mais une fois le principe compris, le processus est assez simple. Sachez simplement que, parfois, les scripts nécessitent quelques ajustements en fonction de votre environnement, notamment pour la gestion des groupes imbriqués ou des autorisations spéciales. Et, en cas de problème, la consultation des journaux de sécurité de votre contrôleur de domaine peut vous aider à comprendre pourquoi un utilisateur n’apparaît plus dans les groupes appropriés.
Comment copier l’appartenance à un groupe d’utilisateurs AD dans PowerShell
Méthode 1 : Copie simple des appartenances à un groupe d’un utilisateur à un autre
Vous devez d’abord identifier les groupes auxquels appartient votre utilisateur source. C’est là qu’intervient la commande Get-ADUser. Utilisez cette commande pour lister tous les groupes :
$getusergroups = Get-ADUser –Identity jsanti -Properties memberof | Select-Object -ExpandProperty memberof
Cette commande récupère tous les groupes dont l’utilisateur jsantiest membre. Remarque : sur certaines configurations, il peut être nécessaire d’exécuter PowerShell en tant qu’administrateur ou d’importer explicitement le module Active Directory Import-Module ActiveDirectorys’il n’est pas chargé automatiquement.
Une fois que vous avez cette liste de groupes, vous pouvez la transmettre directement à Add-ADGroupMember pour ajouter le nouvel utilisateur ( a.adams) à tous ces groupes :
$getusergroups | Add-ADGroupMember -Members a.adams -Verbose
C’est assez logique : vous demandez simplement à PowerShell : « Prends ces groupes et ajoute a.adams-y des membres.» Si tout se passe bien, l’utilisateur cible sera membre des mêmes groupes que l’utilisateur source. Notez qu’il est préférable d’exécuter cette commande en tant qu’administrateur de domaine ou utilisateur disposant des privilèges délégués pour modifier les appartenances aux groupes.
Méthode 2 : Utiliser Get-ADPrincipalGroupMembership pour plus de flexibilité
Cette cmdlet est plus universelle : elle fonctionne avec les utilisateurs, les ordinateurs et les groupes. Elle est particulièrement pratique pour copier les appartenances aux groupes en fonction de l’appartenance réelle de l’objet, et non d’une simple liste de noms distinctifs de groupes (DN).Voici un exemple :
$userSource= "jsanti" $userTarget= "a.adams" $sourceGroups = Get-ADPrincipalGroupMembership -Identity $userSource Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $sourceGroups
Ce script récupère tous les groupes jsantiauxquels il appartient, puis a.adamsy ajoute des membres. Plutôt simple, non ? N’oubliez pas que la cmdlet Add-ADPrincipalGroupMembership attend le tableau d’objets groupe renvoyé par la commande précédente.
Sur certaines machines, cela échoue la première fois, ou vous obtenez des erreurs étranges, mais généralement, relancer la commande ou vérifier que votre session dispose des privilèges appropriés résout le problème.
Méthode 3 : Création d’un fichier journal pour la responsabilisation
Si vous effectuez souvent cette opération ou si vous souhaitez simplement conserver une trace à des fins d’audit, la création d’un fichier journal par script est judicieuse. Voici un script plus long qui copie les groupes et enregistre chaque étape :
$logfile="c:\LOG\CopyAdGroup.log" $userSource= "jsanti" $userTarget= "a.adams" $Time = Get-Date Add-Content $logfile -Value $Time -Encoding UTF8 Add-Content $logfile -Value "_________________" Add-Content $logfile -Value ("Copying AD groups from $userSource to $userTarget") -Encoding UTF8 $sourceGroups = (Get-ADPrincipalGroupMembership -Identity $userSource).SamAccountName foreach ($group in $sourceGroups) { Add-Content $logfile -Value ("Adding $userTarget to $group") -Encoding UTF8 try { $log = Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $group Add-Content $logfile -Value ("Successfully added to $group") -Encoding UTF8 } catch { Add-Content $logfile -Value ("Error: $($Error[0].Exception. Message)") -Encoding UTF8 continue } } Add-Content $logfile -Value "_________________"
Ce script génère des journaux qui peuvent être consultés ultérieurement en cas d’anomalie. Il n’est pas parfait, mais il permet de garder une trace de son exécution, notamment dans les environnements à forte activité.
Conseils supplémentaires : Surveillance et automatisation
Pour consulter la liste des groupes auxquels appartiennent les utilisateurs, examinez les journaux de sécurité de votre contrôleur de domaine et recherchez les événements relatifs aux modifications d’appartenance aux groupes. Une autre astuce consiste à configurer des tâches planifiées qui exécutent ces scripts périodiquement, afin que les appartenances aux groupes restent synchronisées sans intervention manuelle.
Résumé
- Utilisez Get-ADUser ou Get-ADPrincipalGroupMembership pour lister les groupes d’utilisateurs.
- Utilisez cette liste avec Add-ADGroupMember ou Add-ADPrincipalGroupMembership pour cloner les appartenances.
- Exécutez les scripts en tant qu’utilisateur disposant des privilèges adéquats, généralement administrateur de domaine.
- Pensez à consigner toutes les modifications à des fins d’audit.
- Attention aux groupes imbriqués et aux autorisations spéciales qui pourraient compliquer les choses.
Conclure
Cette approche accélère les mises à jour massives et minimise les erreurs par rapport aux clics manuels dans ADUC. Certes, un temps d’adaptation est nécessaire, mais une fois maîtrisée, elle devient indispensable si vous effectuez cette opération fréquemment. Surveillez les autorisations et consultez la documentation des cmdlets en cas de problème. Croisons les doigts pour que cela contribue à simplifier les choses.