demande de rappel immédiat

Sélectionner des utilisateurs ou des groupes en PowerShell avec la boite de dialogue Directory Object Picker

Posted by Jean-Paul Blanc Tuesday, November 15, 2011 8:07:00 PM
Rate this Content 0 Votes

 

 

Vers le téléchargement des fichiers.

 

La boite de dialogue Directory Object Picker permet à un utilisateur de choisir un ou plusieurs objets de type utilisateur, groupe ou ordinateur dans un domaine ou sur un ordinateur en groupe de travail. Un article du MSDN explique comment mettre en œuvre cet objet en C++. J'ai trouvé sur Codes-Sources une adaptation de l'exemple Microsoft en .NET. J'ai de mon coté adapté cet exemple pour fabriquer un assembly qui puisse être aisément utilisé en PowerShell et notament ramener des attributs pour les objets de l'annuaire.

  • Le premier exemple illustre l'usage local, sur un poste workgroup.

Le script suivant charge l'assembly DirectoryObjectPicker.dll et demande l'affichage de la boite de dialogue de recherche qui permet de sélectionner des objets dans la base de compte locale. la variable  $res contient l'objet ou la liste d'objets désirés.

# Obj-Add-Type-ADObjectPicker.PS1
Clear-Host

Add-Type -Path "C:\silogix\DirectoryObjectPicker.dll"

$ADObjectPicker = New-Object  DirectoryObjectPicker.Picker 

# Exemple utilisant les valeurs par défaut
$Res = $ADObjectPicker.ShowDialog()

$Res

Affiche (après séléction d'un utilisateur) :

Directory Object Picker

Ce qui donne comme résultat pour l'affichage de la variable $res :

ADsPath : LDAP://<SID=01050000000000051500000097b5555f02e311bef8182f66e9030000>
ObjectClass : User
UPN :
ScopeType : TARGET_COMPUTER
htAttributes : {}
  • Le second exemple illustre un usage sur un poste domaine.

Le script suivant charge l'assembly DirectoryObjectPicker.dll et demande l'affichage de la boite de dialogue de recherche qui permet de sélectionner des objets dans l'annuaire. Il est possible de préciser la liste des attributs que l'on souhaite retrouver pour chaque objet sélectionné. La variable $res contient l'objet ou la liste des objets désirés avec leurs attributs.

# Obj-Add-Type-ADObjectPicker.PS1
Clear-Host

Add-Type -Path "C:\temp\DirectoryObjectPicker.dll"

$ADObjectPicker = New-Object  DirectoryObjectPicker.Picker 

# Exemple utilisant les valeurs par défaut
$attributes = "samAccountName","sn", "distinguishedName", "givenName"
$Res = $ADObjectPicker.ShowDialog($true, "WM2008R2ENT", $attributes)

$Res
write-host "------------------------------------------"
$Res | select -Property RDN -ExpandProperty htAttributes 

Affiche :

Directory Object Picker en domaine

Ce qui donne comme résultat pour l'affichage de la variable $res :

RDN : Jean Paul Blanc
ADsPath : LDAP://<SID=010500000000000515000000f533b8b9084cb230e5577fc451040000>
ObjectClass : user
UPN : jpb@dom.fr
ScopeType : GLOBAL_CATALOG
htAttributes : {givenName, samAccountName, sn, distinguishedName}

------------------------------------------
Key : givenName
Value : Jean Paul
Name : givenName

Key : samAccountName
Value : jpb
Name : samAccountName

Key : sn
Value : Blanc
Name : sn

Key : distinguishedName
Value : CN=Jean Paul Blanc,OU=MonOu,DC=dom,DC=fr
Name : distinguishedName

 

Comments are closed on this post.