Voici quelques applets de commande utiles pour la gestion des groupes. Comme pour les articles précédents (blog posts), il faut la version 4 de Powershell (même si certains applets pourraient s'exécuter avec une version plus ancienne).
Créer un nouveau groupe :
New-ADGroup "Legal" -SamAccountName "Legal" -GroupCategory Security -GroupScope Global -Path "OU=My Security Groups,DC=mynet,DC=lan"
Afficher les propriétés de base d'un groupe :
Get-ADGroup Legal | fl
DistinguishedName : CN=Legal,OU=My Security Groups,DC=mynet,DC=lan
GroupCategory : Security
GroupScope : Global
Name : Legal
ObjectClass : group
ObjectGUID : 432ab596-959f-435d-811e-ce430338db07
SamAccountName : Legal
SID : S-1-5-21-326661974-301178600-1381666802-2662
Il faut ajouter -properties * pour voir toutes les propriétés.
Et si l'on veut voir des propriétés spécifiques (au-delà de celles affichées dans l'exemple ci-dessus), il faut ajouter, après le signe "| " (pipeline), Format-List (fl) et la propriété en question.
Et si l'on veut voir des propriétés spécifiques (au-delà de celles affichées dans l'exemple ci-dessus), il faut ajouter, après le signe "| " (pipeline), Format-List (fl) et la propriété en question.
Cet applet montrerait toutes les propriétés :
Get-ADGroup Legal -property *
Cet applet montre les propriétés "Description" et "DisplayName" :
Get-ADGroup Legal -prop * | fl Description,DisplayName
Description :
DisplayName :
Sauf que... ces propriétés n'ont pas encore de valeur définie.
Voici ce que nous pouvons faire...
Définir un paramètre pour un groupe
Nous pouvons ajouter une description ainsi :
Set-ADGroup Legal -Description "Legal Department"
Cette fois-ci, une valeur pour la propriété "Description" s'affiche :
Get-ADGroup Legal -prop * | fl Description,DisplayName
Description : Legal Department
DisplayName :
Note : je n'ai rien ajouté pour "DisplayName" mais cela se ferait de la même manière.
Ajouter un membre au groupe :
Add-ADGroupMember "CN=Service Juridique,OU=MyGroups,DC=mynet,DC=lan" -Members "CN=Anne.Schubert,OU=ExchangeUsers,DC=mynet,DC=lan"
Retirer un membre du groupe :
Remove-ADGroupMember "CN=Service Juridique,OU=MyGroups,DC=mynet,DC=lan"
-Members "CN=Chris.White,OU=ExchangeUsers,DC=mynet,DC=lan" -confirm:$false
Afficher les membres du groupe :
Get-ADGroupMember "Service Juridique" | select Name
Name
----
Anna.Taylor
Anne.Schubert
Dans ce cas, le groupe ne comporte que des personnes (utilisateurs). Mais les groupes peuvent contenir aussi d'autres groupes (ou des ordinateurs).
Dans l'exemple suivant, le membre en question est un groupe :
Get-ADGroupMember "Droit Fiscal" | select name
name
----
Service Juridique
Mais cela ne montre que les membres directs et non pas les membres du groupe "Service Juridique" (nous avons vu plus haut que le groupe "Services Juridiques" comprend deux personnes). Pour les afficher, nous pouvons recourir au paramètre -recursive :
Get-ADGroupMember "Droit Fiscal" -recursive | select name
name
----
Anna.Taylor
Anne.Schubert
Note : je remarque que cela ne montre pas le groupe enfant dont les utilisateurs sont membres.
Types de groupe et étendues de groupe
Dans Active Directory, les groupes peuvent être de deux types : groupes de sécurité et groupes de distribution.
En résumé, les groupes de sécurité servent à gérer l'accès aux ressources du réseau tandis que les groupes de distribution sont pour la messagerie. En fait, avec Microsoft Exchange, même les groupes de sécurité peuvent fonctionner comme des groupes de distribution. Dans les deux cas, il faut les modifier pour qu'ils soient des "groupes à extension messagerie". Toutefois, cela dépasse le cadre de cet article.
Les groupes ont aussi une étendue (ou portée - "scope" en anglais), soit "universelle", "globale" ou "locale" (de domaine).
Pour aller plus loin:
Types de groupe
Etendues de groupe
Dans cet article, il ne s'agit donc pas d'expliquer ces notions mais plutôt de démontrer comment nous pouvons afficher et au besoin modifier ces caractéristiques.
Afficher et modifier le type et l'étendue de groupe
Get-ADGroup International_Trade | fl *group*
GroupCategory : Security
GroupScope : Global
Note: la propriété s'appelle GroupCategory plutôt que GroupType (ce qui aurait été préférable s'agissant d'un "type" de groupe).
Si nous voulons changer le type de groupe, nous pouvons utiliser cet applet de commande :
Set-ADGroup International_Trade -GroupCategory Distribution
Ce qui donne le résultat suivant :
Get-ADGroup International_Trade | fl *group*
GroupCategory : Distribution
GroupScope : Global
Dans l'exemple suivant, je vais modifier l'étendue du groupe. Au lieu de "globale", je préfère qu'elle soit "universelle"
Set-ADGroup International_Trade -Groupscope Universal
Ce qui donne ceci :
Get-ADGroup International_Trade | fl *group*
GroupCategory : Security
GroupScope : Universal
Quelques notes :
- Pour les plus observateurs, oui, j'avais reconfiguré le groupe en groupe de sécurité entre-temps.
- Le nom "GroupScope" est mieux choisi, utilisant le même mot anglais "scope".
Modifier une propriété de groupe (exemple : "description")
Set-ADGroup International_Trade -Description "Commerce entre pays"
Afficher une propriété de groupe
Get-ADGroup International_Trade | fl name,Description
name : International_Trade
Description :
Mais où est passée la description que nous venons d'ajouter ?
Nous devons préciser -property *
Par exemple :
Get-ADGroup International_Trade -property * | fl name,Description
name : International_Trade
Description : Commerce entre pays
Désigner un "manager" de groupe
Nous pouvons charger quelqu'un de la "gestion" d'un groupe. C'est la propriété "ManagedBy". Cependant, c'est strictement descriptif. Cela ne permet pas à la personne (ou groupe) désignée de modifier la liste des membres, par exemple :
Set-ADGroup International_Trade -ManagedBy "Janet.Smith"
Cela donne ceci:
Get-ADGroup International_Trade -property * | fl name,ManagedBy
name : International_Trade
ManagedBy : CN=Janet Smith,OU=Commerce,DC=myvmlab,DC=lan
Comment accorder le droit effectif de gérer l'appartenance à un groupe (à la ligne de commande) ? Cela peut se faire avec PowerShell pour les groupes configurés pour la messagerie. Sinon, nous devons recourir à dsacls.
DSACLS
Cela correspond à cette case à cocher dans l'interface graphique :
Afficher les groupes dont un utilisateur est membre
J'aurais pu mettre ce qui suit dans l'article sur les utilisateurs. Quoi qu'il en soit, voici comment nous pouvons voir de quels groupes un utilisateur donné est membre :
Get-ADUser "cn=Chris.Corbett,ou=ExchangeUsers,dc=myvmlab,dc=lan" -property MemberOf | Select -ExpandProperty MemberOf
CN=International_Trade,OU=Groups,DC=myvmlab,DC=lan
CN=Monthly Mailing,OU=Groups,DC=myvmlab,DC=lan
Thank you for reading the article about FR (French) - Powershell 4.0 - Active Directory - Groups on the blog NEW TECH If you want to disseminate this article on please list the link as the source, and if this article was helpful please bookmark this page in your web browser by pressing Ctrl + D on your keyboard keys.