Dans cet exemple nous allons voir comment récupérer l’UPN, le SAN et le profilepath des utilisateurs d’un groupe dans l’ad courant que nous allons ensuite placer dans un tableau.
Tout d’abord, connectons nous au domaine courant et indexons notre variable de recherche
$domain=[ADSI]''
$search=New-Object system.directoryservices.directorysearcher($domain)
Maintenant, nous allons nous connecter au groupe sur lequel nous allons récupérer les membres
$GRP= "GroupTest"
$search.filter="(&(objectClass=Group)(name=$GRP))"
$group=$search.findone()
Initialisons notre variable contenant notre tableau
$tab=@()
Maintenant pour chaque membres du groupe, nous récupérons à tour de rôle dans des variables l’upn, le profilepath et le SamAccountName.
foreach ($user in $group.properties.member)
{
$searchUser=New-Object system.directoryservices.directorysearcher($domain)
$searchUser.filter="(&(objectclass=user)(distinguishedname=$user))"
$Upn=$SearchUser.findone().properties.userprincipalname
$profilepath=$SearchUser.findone().properties.profilepath
$sam=$SearchUser.findone().properties.samaccountname
}
Pour chacune des valeurs récupérés, nous allons les placer dans un tableau.
Pour créer un tableau, nous allons initier un objet de type PsObject dans une variable
$line=new-object psobject
Ensuite, il suffit d’ajouter à cette variable un membre contenant le nom de notre tableau et la valeur
Ajout colonne UPN
$line | Add-Member -Name UPN -MemberType NoteProperty -Value ""
Ajout colonne SAN
$line | Add-Member -Name SAN -MemberType NoteProperty -Value ""
Ajout colonne ProfilePath
$line | Add-Member -Name ProfilePath -MemberType NoteProperty -Value ""
Pour finir, nous ajoutons notre variable $line à notre variable tableau $tab
$tab+=$line
Maintenant nous allons compléter le contenu de notre boucle afin que chacune des valeurs récupérés soit placé dans notre tableau
foreach ($user in $group.properties.member)
{
$line=new-object psobject; $user="$user"
$searchUser=New-Object system.directoryservices.directorysearcher($domain)
$searchUser.filter="(&(objectclass=user)(distinguishedname=$user))"
$Upn=$SearchUser.findone().properties.userprincipalname
$profilepath=$SearchUser.findone().properties.profilepath
$sam=$SearchUser.findone().properties.samaccountname
$line | Add-Member -Name UPN -MemberType NoteProperty -Value"$upn"
$line | Add-Member -Name SamAccountName -MemberType NoteProperty -Value "$sam"
$line | Add-Member -Name ProfilePath -MemberType NoteProperty -Value "$profilepath"
$tab+=$line
}
Ce qui donne :