Sunday, December 14, 2014

FR (French) - Powershell 4.0 - Active Directory - Groups

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.

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


No comments:

Post a Comment