PI Services

Le blog des collaborateurs de PI Services

Récupération d’attributs utilisateurs dans un tableau en powershell

 

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 ""

image

Ajout colonne SAN

$line | Add-Member -Name SAN -MemberType NoteProperty -Value ""

image 

Ajout colonne ProfilePath

$line | Add-Member -Name ProfilePath -MemberType NoteProperty -Value ""

image

Pour finir, nous ajoutons notre variable $line à notre variable tableau $tab

$tab+=$line

image

 

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 :

image

Ajouter un commentaire

Loading