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 :
$rootOU = [ADSI]("LDAP://DC=mysite,DC=com" ) $computersOU = [ADSI]("LDAP://OU=Computers,OU=MyORG,DC=mysite,DC=com" ) $searcherLDAP = New-Object System.DirectoryServices.DirectorySearcher $searcherLDAP.SearchScope = "Subtree" $searcherLDAP.SearchRoot = $rootOU $testComputer = "MyPC" $searcherLDAP.Filter = ("(&(objectClass=computer)(name=" + $testComputer + " ))" ) $resultLDAP = $searcherLDAP.FindOne() #retourne null s'il ne trouve rien if ($resultLDAP) { echo " $testComputer FOUND !" } else { echo " $testComputer NOT FOUND!" }
|
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 :
$searcherLDAP.SearchScope = "Base" $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 ?
Message édité par ZeBix le 14-01-2010 à 14:46:49