Lister des utilisateurs d'un OU qui se trouve à l'intérieur d'autres OU [Fermé]

Signaler
-
Messages postés
8
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
21 octobre 2019
-
Bonjour all,

Je souhaiterais savoir comment lister des utilisateurs ou les OU qui font partie d'un OU parent... J'ai cherché sur internet mais j'ai rien trouvé, pourtant la demande est assez simple. ;(

J'aimerais par exemple faire des listes de l'OU CAF qui se trouve dans l'OU FR qui lui même se trouve dans l'OU Countries.
Donc en gros ça fait : Countries\FR\CAF


Soucis c'est que lorsque je fais un -SearchBase il va n'accepter que l'OU parent (Countries), si je mets FR ou CAF il va me dire que la commande Get-ADusers ou Get-ADOrganizationalUnit : Directory object not found

Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase 'OU=Countries,DC=EMEA,DC=LOREAL,DC=INTRA' -SearchScope Subtree | Format-Table Name


Avec ce code il va me sortir les OU (ou les utilisateurs si je mets Get-ADusers) de l'AD entier *outch*

Quelqu'un aurait l'astuce ? :(

Merci d'avance.

1 réponse

Messages postés
8
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
21 octobre 2019
1
Simplement avec un filtre comme ceci :
-SearchBase 'OU=CAF,OU=FR,OU=Countries,DC=EMEA,DC=LOREAL,DC=INTRA'
Et tu peux enlever le -searchscope.

Tu peux aussi faire un array des OU enfants que tu souhaites extraires (peut importe leur niveau dans le tree):

$ous = @("PIF","PAF","POUF")

foreach($ou in $ous){

Get-ADOrganizationalUnit -Filter * -SearchBase 'OU=Countries,DC=EMEA,DC=LOREAL,DC=INTRA' | Where{$_.distinguishedname -like "OU=$ou,*"}

}
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Utilisateur anonyme > Utilisateur anonyme
Ok je l'avais simplement mis au mauvais endroit du coup pour ceux qui plus tard on ce problème ça donne au final ça :

$ous = @("PIF","PAF","POUF")

foreach($ou in $ous){Get-ADUser -Filter * -SearchBase 'OU=CAF,OU=RouteW10,OU=Utilisateurs,OU=DPGPF,OU=FR,OU=Countries,DC=EMEA,DC=LOREAL,DC=INTRA' | Export-Csv -Path C:\Users\$env:username\Desktop\ADuserlol.csv | Format-Table Name, Surname, UserPrincipalName, GivenName, Enabled, SamAccountName} Where{$_.distinguishedname -like "OU=$ou,*"}





En grand merci à unfamous
Messages postés
8
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
21 octobre 2019
1
Déjà que souhaites tu exporter exactement ? Des users, des OU, des OU + des users ?

Solution 1: Tu pipe la fonction export-csv à la fonction get-aduser.
Get-ADUser -Filter * -SearchBase 'OU=Countries,DC=EMEA,DC=LOREAL,DC=INTRA' | Where{$_.distinguishedname -like "OU=$ou,*"} | export-csv C:\temp\test.csv -NoTypeInformation -Encoding Default

Solution 2: Tu pipe un tableau d'objet à la fonction export-csv

$resultat = @()
$properties = @{}


$users = Get-ADUser -Filter * -SearchBase 'OU=Countries,DC=EMEA,DC=LOREAL,DC=INTRA' Where{$_.distinguishedname -like "OU=$ou,*"}

foreach($user in $users){
$properties = [PSCustomObject]@{
Username = $user.name
Nom = $user.surname
Prénom = $user.GivenName
Mail = $user.mail
}
$resultat += $properties

$properties = $null

}

$resultat | export-csv C:\Temp\res.csv -notypeinformation -encoding Default

Avec le 2ème exemple tu peux sélectionner tes colonne du CSV avec toutes les informations dont tu as besoin, tu peux reprendre n'importe quelle valeur dans la boucle et la transformée, c'est la solution idéale ou tu maîtrise facilement l'information que tu veux exporter.

Imagine que dans ta valeur properties tu souhaites savoir la date du jour, tu déclare simplement une valeur $today = [datetime]::Today.ToString('yyyy.MM.dd') en début de script et tu le reprends dans properties:

$properties = [PSCustomObject]@{
Username = $user.name
Nom = $user.surname
Prénom = $user.GivenName
Mail = $user.mail
DateExtraction = $today
}
Utilisateur anonyme >
Messages postés
8
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
21 octobre 2019

Je veux exporter des users.

Je vais étudier ça merci ! :D
Utilisateur anonyme >
Messages postés
8
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
21 octobre 2019

Re,

J'ai essayé de checker effectivement cette méthode est très souple, néanmoins ca ne fonctionne pas car pour le Where j'ai une erreur : Get-ADUser : A positional parameter cannot be found that accepts argument 'Where'.

J'ai tenté de mettre des {} entre le Get-ADUser et le Where mais il va me mettre un Unexpected token 'Where' in expression or statement
Messages postés
8
Date d'inscription
mardi 8 décembre 2009
Statut
Membre
Dernière intervention
21 octobre 2019
1 > Utilisateur anonyme
Hello,

Je n'ai effectivement pas testé le scipt, c'était écrit à la vollée.

$users = Get-ADUser -Filter * -SearchBase 'OU=Countries,DC=EMEA,DC=LOREAL,DC=INTRA' | where{$_.distinguishedname -like "OU=$ou,*"} 


Il manquait simplement le pipe avant le where. C'est la base de PowerShell, il faut que tu le remarque tout de suite :)