Question Requete AD avec détails du manager

Plus d'informations
il y a 9 ans 10 mois #21774 par MILS
Bonjour à tous,

Je réalise un script qui récupère mes utilisateurs AD avec différents attributs dont le manager. La sortie se fait en CSV ligne par ligne par utilisateur.

Je souhaiterai, lorsque cet attribut est renseigné, que le nom, le prénom, le téléphone et le mail du manager s'affiche à la suite de la ligne de l'utilisateur SANS refaire une requête dans l'AD puisque j'ai déjà toutes informations nécessaire dans le résultat de ma requête.

Pour ce fait, je me suis basé sur un exemple de script de chez Microsoft :

[code:1]
$ADRequest = Get-ADUser -SearchBase DC=DOMAIN,DC=COM `
-LDAPFilter * -Properties *

$ADRequest |
Select-Object @{Label = \"Matricule\";Expression = {$_.cn}},
@{Label = \"Nom\";Expression = {$_.sn}},
@{Label = \"Prénom\";Expression = {$_.givenName}},
@{Label = \"Téléphone fixe\";Expression = {$_.telephoneNumber}},
@{Label = \"E-mail\";Expression = {$_.mail}},

@{Label = \"Manager\";Expression = {%{(Get-AdUser $_.manager -Properties DisplayName).DisplayName}}}
@{Label = \"M_Nom\";Expression = {Select-Object @(Expression=($_.sn -Split ',')[0].substring(3))}},
@{Label = \"M_Prenom\";Expression = {$_.givenName}},
@{Label = \"M_Tel\";Expression = {$_.telephoneNumber}},
@{Label = \"M_mail\";Expression = {$_.mail}}

| Export-Csv -Path $csvfile -NoTypeInformation
[/code:1]

La partie du manager est celle que j’essaie d'améliorer.

J'ai essayé différentes méthodes mais je ne suis pas assez aguerri en powershell pour trouver la réponse moi-même :/

Merci par avance pour votre aide.<br><br>Message édité par: Arnaud, à: 27/04/16 15:17

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 10 mois #21780 par Philippe
salut dmils

Je souhaiterai, lorsque cet attribut est renseigné, que le nom, le prénom, le téléphone et le mail du manager s'affiche à la suite de la ligne de l'utilisateur

tout est possible

J'ai essayé différentes méthodes mais je ne suis pas assez aguerri en powershell pour trouver la réponse moi-même :/

voici les modif :

[code:1]
$ADRequest = Get-ADUser -SearchBase \&quot;DC=DOMAIN,DC=COM\&quot; -LDAPFilter * -Properties DisplayName

$ADRequest | foreach {
if ($_.manager) {
$manager = Get-AdUser $_.manager -Properties DisplayName, givenName, sn, mail, telephoneNumber, cn, manager
$_ | Select-Object @{Label = \&quot;Matricule\&quot;;Expression = {$_.cn}},
@{Label = \&quot;Nom\&quot;;Expression = {$_.sn}},
@{Label = \&quot;Prénom\&quot;;Expression = {$_.givenName}},
@{Label = \&quot;Téléphone fixe\&quot;;Expression = {$_.telephoneNumber}},
@{Label = \&quot;E-mail\&quot;;Expression = {$_.mail}},

@{Label = \&quot;Manager\&quot;;Expression = {$manager.DisplayName}},
@{Label = \&quot;M_Nom\&quot;;Expression ={$manager.sn}},
@{Label = \&quot;M_Prenom\&quot;;Expression = {$manager.givenName}},
@{Label = \&quot;M_Tel\&quot;;Expression = {$manager.telephoneNumber}},
@{Label = \&quot;M_mail\&quot;;Expression = {$manager.mail}}
}
else {
# crée un objet pour ne pas avoir d'erreur quand il n'y a pas de manager
$_ | Select-Object @{Label = \&quot;Matricule\&quot;;Expression = {$_.cn}},
@{Label = \&quot;Nom\&quot;;Expression = {$_.sn}},
@{Label = \&quot;Prénom\&quot;;Expression = {$_.givenName}},
@{Label = \&quot;Téléphone fixe\&quot;;Expression = {$_.telephoneNumber}},
@{Label = \&quot;E-mail\&quot;;Expression = {$_.mail}},

@{Label = \&quot;Manager\&quot;;Expression = {\&quot;\&quot;}},
@{Label = \&quot;M_Nom\&quot;;Expression ={\&quot;\&quot;}},
@{Label = \&quot;M_Prenom\&quot;;Expression = {\&quot;\&quot;}},
@{Label = \&quot;M_Tel\&quot;;Expression = {\&quot;\&quot;}},
@{Label = \&quot;M_mail\&quot;;Expression = {\&quot;\&quot;}}
}
} | Export-Csv -Path $csvfile -NoTypeInformation[/code:1]

SANS refaire une requête dans l'AD puisque j'ai déjà toutes informations nécessaire dans le résultat de ma requête.

La y a plus de travail !!!

[code:1]
$ADRequest = Get-ADUser -SearchBase \&quot;DC=DOMAIN,DC=COM\&quot; -LDAPFilter * -Properties DisplayName

$ADRequest | foreach {
$dsnmanager = $_.manager
$manager = $ADRequest | where {$_.DistinguishedName -eq $dsnmanager}
if ($manager) {
$_ | Select-Object @{Label = \&quot;Matricule\&quot;;Expression = {$_.cn}},
@{Label = \&quot;Nom\&quot;;Expression = {$_.sn}},
@{Label = \&quot;Prénom\&quot;;Expression = {$_.givenName}},
@{Label = \&quot;Téléphone fixe\&quot;;Expression = {$_.telephoneNumber}},
@{Label = \&quot;E-mail\&quot;;Expression = {$_.mail}},

@{Label = \&quot;Manager\&quot;;Expression = {$manager.DisplayName}},
@{Label = \&quot;M_Nom\&quot;;Expression ={$manager.sn}},
@{Label = \&quot;M_Prenom\&quot;;Expression = {$manager.givenName}},
@{Label = \&quot;M_Tel\&quot;;Expression = {$manager.telephoneNumber}},
@{Label = \&quot;M_mail\&quot;;Expression = {$manager.mail}}
}
else {
# crée un objet pour ne pas avoir d'erreur quand il n'y a pas de manager
$_ | Select-Object @{Label = \&quot;Matricule\&quot;;Expression = {$_.cn}},
@{Label = \&quot;Nom\&quot;;Expression = {$_.sn}},
@{Label = \&quot;Prénom\&quot;;Expression = {$_.givenName}},
@{Label = \&quot;Téléphone fixe\&quot;;Expression = {$_.telephoneNumber}},
@{Label = \&quot;E-mail\&quot;;Expression = {$_.mail}},

@{Label = \&quot;Manager\&quot;;Expression = {\&quot;\&quot;}},
@{Label = \&quot;M_Nom\&quot;;Expression ={\&quot;\&quot;}},
@{Label = \&quot;M_Prenom\&quot;;Expression = {\&quot;\&quot;}},
@{Label = \&quot;M_Tel\&quot;;Expression = {\&quot;\&quot;}},
@{Label = \&quot;M_mail\&quot;;Expression = {\&quot;\&quot;}}
}
} | Export-Csv -Path $csvfile -NoTypeInformation[/code:1]

si ta des questions sur le script n'hésite pas a revenir

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 9 ans 10 mois #21787 par MILS
Réponse de MILS sur le sujet Re:Requete AD avec détails du manager
Bonjour,

Ça marche nickel ! Je m'échinais à essayer de faire les deux parties dans un seul traitement mais c'est effectivement plus simple et plus efficace séparé. Comme le dirais un linuxien \&quot;Keep It Simple Stupid\&quot;.

J'ai mis un peu de temps à comprendre la logique mais je pense y être arrivé. Je vais essayer d'ajouter la même chose pour la secrétaire et optimiser le tout.

Merci pour ta réponse rapide et fonctionnelle ! ;)

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.041 secondes
Propulsé par Kunena