[Résolu] [Powershell] [LDAP] un Search sur une sous-OU ?

un Search sur une sous-OU ? [Résolu] [Powershell] [LDAP] - Shell/Batch - Programmation

Marsh Posté le 13-01-2010 à 17:02:10    

Bonjour à tous,  
 
A l'aide d'un script Powershell, je voudrais vérifier si un ordinateur se trouve dans une OU spécifique dans mon organisation Active Directory.
 
Voici le script (simplifié) qui vérifie si l'ordinateur se trouve dans Active Directory tout court (sans prendre l'OU en compte) :  
 

Code :
  1. $rootOU = [ADSI]("LDAP://DC=mysite,DC=com" )
  2. $computersOU = [ADSI]("LDAP://OU=Computers,OU=MyORG,DC=mysite,DC=com" )
  3.  
  4. $searcherLDAP = New-Object System.DirectoryServices.DirectorySearcher
  5. $searcherLDAP.SearchScope = "Subtree"
  6. $searcherLDAP.SearchRoot = $rootOU
  7.  
  8. $testComputer = "MyPC"
  9.  
  10. $searcherLDAP.Filter = ("(&(objectClass=computer)(name=" + $testComputer + " ))" )
  11. $resultLDAP = $searcherLDAP.FindOne()  #retourne null s'il ne trouve rien
  12.         
  13. if ($resultLDAP)
  14. { echo " $testComputer FOUND !"
  15. }
  16. else
  17. { echo " $testComputer NOT FOUND!"
  18. }

Notes :  
- L'OU "Computers" est "enfant" d'une OU "MyORG", je ne peux pas changer ça.
- Le PC se trouve dans l'OU Computers en question.
- Et le script fonctionne et me retourne bien  "MyPC FOUND!", tout va bien.
 
Mais, si je change, dans le code ci-dessus, les deux lignes suivantes :  

Code :
  1. $searcherLDAP.SearchScope = "Base"
  2. $searcherLDAP.SearchRoot = $computersOU

, le résultat devient "MyPC NOT FOUND!"
 
- Pour le SearchScope, je pense que le paramètre est bon (source) : "Base" permet de se limiter à une OU en particulier.
- Pour le SearchRoot, là je pense que la syntaxe de $computersOU est la bonne (d'abord le child, puis le parent, puis les DC dans le bon ordre) mais je suppose que le bât doit blesser à cet endroit.
 
Quelqu'un a une idée ?  :cry:


Message édité par ZeBix le 14-01-2010 à 14:46:49
Reply

Marsh Posté le 13-01-2010 à 17:02:10   

Reply

Marsh Posté le 14-01-2010 à 14:46:32    

Trouvé via une connaissance au bureau :)
 

Code :
  1. $searcherLDAP.SearchScope = "OneLevel"


 
J'avais vu cette option dans la doc que je link ci-dessus, mais je n'avais pas bien compris la définition.  En fait "Base" limite la recherche à l'OU elle-même (ici : "Computers" ), c'est-à-dire l'objet OU (me demande bien ce qu'on peut faire avec ... aller chercher ses propriétés ou sa sécurité peut-être)
 
OneLevel va regarder les enfants directs de cet objet, c'est ce que je voulais :)
 
Case closed :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed