Ajouter ou retirer des membres d’un groupe AD
Sommaire
I. Présentation
Créer un groupe Active Directory, c’est une chose, et nous avons vu comment le faire dans le chapitre précédent, mais être capable de le gérer c’est mieux. J’entends par là, être capable d’ajouter ou supprimer des membres dans un groupe Active Directory grâce à PowerShell. C’est ce que nous allons voir dans ce chapitre.
II. Ajouter un utilisateur dans un groupe AD
Vous pouvez ajouter un utilisateur à un groupe Active Directory en utilisant le cmdlet « Add-AdGroupMember ». Prenons un exemple et reprenons notre groupe créé précédemment, à savoir « Informatique » : nous allons ajouter deux utilisateurs à ce groupe : « l.leuze » et « g.zola ».
Il suffit d’indiquer le nom du groupe et les membres à ajouter à la suite du paramètre « -Members ». Quand il y a plusieurs utilisateurs à ajouter, les noms doivent être séparés par une virgule.
Ce qui donne :
Add-AdGroupMember -Identity Informatique -Members "l.leuze", "g.zola"
Pour récupérer la liste des membres d’un groupe Active Directory, le cmdlet « Get-ADGroupMember » doit être utilisé. Nous reviendrons plus en détail sur ce cmdlet dans le chapitre précédent, mais en attendant, voici comment l’utiliser basiquement :
Get-ADGroupMember -Identity Informatique
La bonne nouvelle c’est que nos deux utilisateurs sont désormais membres du groupe :
III. Ajouter un utilisateur dans un groupe : autres exemples
Maintenant que nous avons vu comment ajouter des utilisateurs dans un groupe Active Directory, je vous propose quelques exemples d’utilisation ci-dessous.
A. Prendre les membres d’un groupe et les ajouter dans un autre groupe
Imaginons un groupe nommé « GroupeA » qui contient 100 membres, et nous souhaitons récupérer les membres de ce groupe afin de les ajouter à un autre groupe nommé « GroupeB ». PowerShell va nous aider à réaliser cette opération facilement.
Grâce à l’enchaînement de deux pipelines et d’une boucle ForEach-Object, nous pouvons récupérer la liste des membres du premier groupe, ensuite récupérer les utilisateurs associés, puis envoyer tout ça dans une boucle. La boucle quant à elle va ajouter chaque utilisateur dans le groupe « GroupeB ».
Get-ADGroupMember "GroupeA" | Get-ADUser | ForEach-Object { Add-ADGroupMember -Identity "GroupeB" -Members $_ }
Nous pouvons faire la même chose en intégrant la notion de récursivité, c’est-à-dire que l’on va prendre tous les membres du « GroupeA » mais aussi tous les utilisateurs qui sont dans les groupes eux-mêmes membres de « GroupeA ». Il suffit d’ajouter le paramètre -Recursive, comme ceci :
Get-ADGroupMember "GroupeA" -Recursive | Get-ADUser | ForEach-Object { Add-ADGroupMember -Identity "GroupeB" -Members $_ }
Voyons un autre exemple.
B. Ajouter les utilisateurs d’un CSV dans un groupe AD
Si l’on prend un fichier CSV avec quelques identifiants de l’AD, comme ceci :
Login; "l.leuze"; "g.zola";
On peut exécuter une commande pour ajouter tous les utilisateurs de ce fichier CSV dans le groupe « Informatique ». Comme ceci :
Import-CSV "C:\Scripts\AD_USERS\Login.csv" -Delimiter ";" | ForEach-Object { Add-AdGroupMember -Identity "Informatique" -Members $_.login }
Voyons comment retirer un utilisateur d’un groupe AD.
IV. Retirer un utilisateur d’un groupe AD
Pour retirer un membre d’un groupe Active Directory, finalement, la logique est la même que pour l’ajouter : on précise le nom du groupe, et le nom du ou des membres à retirer du groupe. La différence se situe au niveau du cmdlet que l’on va utiliser : Remove-ADGroupMember.
Reprenons nos deux utilisateurs de toute à l’heure, à savoir, « l.leuze » et « g.zola ». Désormais, nous allons les retirer du groupe « Informatique ». Ce qui donne :
Remove-AdGroupMember -Identity Informatique -Members l.leuze, g.zola -Confirm:$false
En complément, faut penser à ajouter « -Confim:$false » dans cette commande, car sinon une demande de confirmation va s’afficher à l’écran (pas pratique dans un script).
L’exemple vu précédemment basé sur le fichier CSV et également applicable pour retirer des membres d’un groupe, il suffit de remplacer le nom du cmdlet et d’ajouter la suppression de la confirmation.
V. Mettre à jour la liste des groupes dont un utilisateur est membre
Partons du principe que nous souhaitons qu’un utilisateur soit membre de trois groupes : « Groupe1 », « Groupe2 » et « Utilisa. du domaine ». Nous laissons l’utilisateur dans le groupe « Utilisa. du domaine » puisqu’il s’agit de son groupe principal par défaut.
L’idée c’est de mettre à jour l’utilisateur pour qu’il soit membre seulement de ces groupes. Autrement dit, on va épurer la liste des groupes dont il fait partie pour ne laisser que ces trois-là.
On va commencer par définir la liste des groupes dans la variable $UserTargetGroupList. Ensuite, la variable $UserMemberOf va contenir la liste des groupes dont l’utilisateur est membre actuellement.
Enfin, grâce à une boucle Foreach nous allons vérifier pour chaque groupe dont il est membre s’il se situe dans le tableau $UserTargetGroupList. Autrement dit, si le groupe est l’un des trois groupes dont il doit être membre. Si ce n’est pas le cas, on le retire de ce groupe.
Ce bout de code pratique met en pratique différentes commandes que l’on a découvertes précédemment. Voici le résultat :
# Liste des groupes dont l'utilisateur doit être membre $UserTargetGroupList = @("Groupe1","Groupe2","Utilisa. du domaine") # Récupérer la liste des groupes dont il est membre $UserMemberOf = Get-ADUser -Filter 'UserPrincipalName -eq $UserUPN' -Properties memberof | Select-Object -ExpandProperty memberof Foreach($Group in $UserMemberOf){ if(($Group.Split(",")[0]).Split("=")[1] -notin $UserTargetGroupList){ Remove-ADGroupMember -Identity $Group -Members $UserLogin -Confirm:$false } }
VI. Conclusion
Pour terminer, il est à noter que pour ajouter un utilisateur dans un nouveau groupe, le cmdlet « Add-ADPrincipalGroupMembership » doit être utilisé. Cela ne remet pas en cause ce que l’on vient de voir, en fait il y a deux façons de faire :
- Soit on ajoute un nouveau membre au groupe via Add-AdGroupMember,
- Soit on ajoute un utilisateur dans le groupe avec « Add-ADPrincipalGroupMembership »
Nous retrouvons le même principe avec les cmdlets « Remove-AdGroupMember » et « Remove-ADPrincipalGroupMembership ».
Dans le prochain chapitre, nous verrons comment obtenir plus de détails sur les membres d’un groupe.