Question [Résolu]Lister les OU de 1er niveau uniquement

Plus d'informations
il y a 10 ans 1 mois #10121 par olivia
Bonjour,

Quelqu'un saurait-il comment afficher seulement les unités d'organisations à la racine sans les sous OU.


merci<br><br>Message édité par: Arnaud, à: 1/09/11 11:24

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

Plus d'informations
il y a 10 ans 4 semaines #10130 par Alan Pinard
Réponse de Alan Pinard sur le sujet Re:Unité d'Organisation
Bonjour Sam87,

Essaie ce bout de code sur un domaine contrôleur. Ce n'est surement pas la méthode la meilleur mais je crois que tu pourras commencer avec cela:

[code:1]
$LdapQuery = \&quot;(&amp;(objectCategory=organizationalUnit))\&quot;
$DirectoryEntry = new-object system.directoryservices.directoryentry
$DirectorySearcher = new-object system.directoryservices.directorysearcher -argumentlist $DirectoryEntry,$LdapQuery
$OUList = $DirectorySearcher.findAll()
$OUList | %{If(($_.Path.Split(\&quot;,\&quot;«»).Count) -le 3) {$_.Path}}
[/code:1]

En espérant que ça te donne un coup de main!

Alan

Alan Pinard
Version A

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

Plus d'informations
il y a 10 ans 4 semaines #10132 par Richard Lazaro
Réponse de Richard Lazaro sur le sujet Re:Unité d'Organisation
Bonjour,

Versiona, tu y étais presque, sauf que ta méthode de \&quot;filtre\&quot; ne peut fonctionner car tu ne sais pas comment est constitué le nom de domaine (microsoft.com ou zune.microsoft.com par exemple)

L'objet DirectorySearcher a une propriete SearchScope qui est par defaut à la valeur 'SubTree', c'est pour cela que la recherche te remonte tout.

Donc :

[code:1]
$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objDomain
$objSearcher.Filter = '(&amp;(objectCategory=organizationalUnit))'
$objSearcher.SearchScope = 'OneLevel'
$objSearcher.PageSize = 500
$objSearcher.SizeLimit = 1000

$objSearcher.FindAll()
[/code:1]

Le PageSize et SizeLimit, permet de gérer un trés grand nombre d'objet retourné par la requette LDAP.

Bien Cordialement,
Richard Lazaro.

PS :
@Versiona : Pense à utiliser le cmdlet Where-Object à la place d'une condition dans un Foreach-Object

[code:1]
$OUList | Where-Object{$_.Path.Split(\&quot;,\&quot;«»).Count -le 3}
[/code:1]

A noter aussi, qu'il est préférable d'utiliser Foreach-Object à la palce de % pour que les \&quot;nouveaux\&quot; sur PowerShell puissent comprendre plus facilement ;]

Think-MS : (Get-Life).Days | %{ Learn-More }

\\&quot;Problems cannot be solved by the same level of thinking that created them.\\&quot; - Albert Einstein

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

Plus d'informations
il y a 10 ans 4 semaines #10133 par olivia
Réponse de olivia sur le sujet Re:Unité d'Organisation
Bonsoir,

merci, je vais tester !!!!

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

Plus d'informations
il y a 10 ans 3 semaines #10170 par olivia
Réponse de olivia sur le sujet Re:Unité d'Organisation
Bonjour,

cela me retourne : System.DirectoryServices.SearchResult

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

Plus d'informations
il y a 10 ans 3 semaines #10172 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Unité d'Organisation
Bonjour,

Le script suivant fonctionne très bien sur ma plateforme de test.

[code:1]
$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher $objDomain
$objSearcher.Filter = '(&amp;(objectCategory=organizationalUnit))'
$objSearcher.SearchScope = 'OneLevel'
$objSearcher.PageSize = 500
$objSearcher.SizeLimit = 1000

$objSearcher.FindAll()
[/code:1]


Il ne me retourne que les OU de 1er niveau grâce au $objSearcher.SearchScope = 'OneLevel'

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ou d'un conseil ?

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

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