Gestion des groupes Active Directory en Powershell

La gestion des groupes AD est assez simple en Powershell, et la synthaxe assez proche de celle qu’on pouvait trouver en VBS. Pour effectuer une requête LDAP sur un objet AD, il suffit de recuperer son Distringuished Name (DN)

$DNGroup = [Completer]
$dom = New-Object DirectoryServices.DirectoryEntry("LDAP://$DNGroup")

Les méthodes de l’objet $dom peuvent maintenant etre utilisées:

$dom | get-member

Il est maintenant assez facile de lister les membres

$dom.member

Pour ajouter un utilisateur, il faut maintenant utiliser la methode add en passant en parametre le distringuishedName de l’utilisateur. Voila ce que ça donne

$dom.member.Add($DNUser)
$dom.setInfo()

AD4

Dans le cas d’une connexion à un domaine non trusté. Il est nécessaire de recupérer les credentials de l’utilisateur

$cred = get-credential

AD5

Notre mot de passe est maintenant chiffré, mais la création d’un objet directory entry nécessite que le mot de passes ne soit pas chiffré. Pas de probleme, powershell fournis une méthode pour le faire

$pwd = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($cred.Password))

Et maintenant, il ne reste plus qu’à recreer l’objet directory entry en passant en parametre, la chaine ldap, le username ainsi que le mot de passe

$dom = New-Object DirectoryServices.DirectoryEntry("LDAP://$domain/$DNGroup",$cred.UserName,$pwd)

Considérons maintenant que nous nous trouvons dans un domaine (DomaineA) et un autre domaine, qui sera trusté (DomaineB). Admettons maintenant que nous souhaitions ajouter dans un groupe de DomaineA, un utilisateur de DomaineB. Si nous utilisons la méthode vu plus haut

$dom.member.Add($DNUser)
$dom.setInfo()

Lors du setinfo une erreur se produira, car il n’est pas possible d’ajouter une utilisateur d’un domaine étranger en passant son DN.

Il est nécessaire de passer par son SID. Pour recuperer le SID d’un utilisateur, il faut faire comme suit:

$User = "Domaine\Utilisateur"
$AccountSID = ((New-Object System.Security.Principal.NTAccount($User)).Translate([System.Security.Principal.SecurityIdentifier])).Value

Une fois le SID recupéré, il est maintenant possible de l’ajouter dans le groupe en forgeant sa chaine ldap comme suit :

$LDAP = "LDAP:// < SID=$AccountSID>"
$dom.member.Add($LDAP)
$dom.setInfo()

Et voila qui conclu pour cet article sur la gestion des groupes AD en powershell

Similar Posts:

One response to “Gestion des groupes Active Directory en Powershell”

  1. lufungula

    salut,
    je suis un debutant dans le domaine de la programmation je vais apprendre le powershell et son administration

Leave a Reply

Gauthier Chanliau

Vous trouvez plus d'informations sur moi sur mon site personnel

FlickR

The teamIC 09 French FinaleHelp'Aged - GamesTour Eiffel - IC 09 French final