Question [Résolu]savoir si un utilisateur existe

Plus d'informations
il y a 15 ans 5 mois #8333 par olivia
Bonjour,

je cherche à faire un script permettant de savoir si l'utilisateur existe ou pas


[code:1]####fct à tester pour savoir si utilsateur existant stopper le reste du prob ####
function userexist
{
param ($login)
$adsi = [ADSI]$path
$search = new-object system.directoryservices.directorysearcher $adsi
$search.filter = \"(objectCategory=user)\"
$userlist = $search.findall()
foreach($i in $userlist)
{
$cpt++
if($userlist[$i] -eq $login){ $exist = $true }
else{ $exist = $false }
}
return $exist
}
#####appel a la fonction###
$rep = userexist
if($rep -eq $false)
{
echo \"utilisateur n'existe pas !!\"
}
else{
echo \"utilisateur existe\"
}

[/code:1]

olivia

Message édité par: sam87, à: 16/12/10 10:51<br><br>Message édité par: sam87, à: 17/12/10 09:35

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

Plus d'informations
il y a 15 ans 5 mois #8338 par Jacques Barathon
D'une part, je ne suis pas sûr du type de l'objet $login que tu passes à ta fonction, mais il faudrait que ce soit un objet ADSI, ça me paraît un peu contradictoire : en effet, il faudrait faire une connexion ADSI sur l'utilisateur exact dont on veut vérifier l'existence, ce qui ne peut marcher que si l'utilisateur existe. La fonction n'a donc aucun sens.

A ta place, je passerais plutôt en paramètre une propriété de l'utilisateur qui lui est unique, comme le distinguishedname ou le samAccountName. Le samAccountName me paraît plus approprié pour un test d'existence.

D'autre part, tu fais un FindAll() sur tous les utilisateurs pour ensuite comparer ton $user à la liste obtenue. Ce n'est vraiment pas optimal, et surtout tu risques de n'avoir qu'une liste partielle si tu as plusieurs milliers d'utilisateurs dans ton AD.

A ta place, je ferais directement un FindOne() en construisant le Search Filter pour qu'il me retourne l'utilisateur correspondant à mon critère.

Tout ça me donnerait la fonction suivante :

[code:1]
function userexist
{
param ($samAccountName)

$adsi = [ADSI]$path
$search = new-object system.directoryservices.directorysearcher $adsi
$search.filter = \&quot;(&amp;(objectCategory=user)(samAccountName=$samAccountName))\&quot;
$user = $search.findone()
if ($user) {$true} else {$false}
}
[/code:1]

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

Plus d'informations
il y a 15 ans 5 mois #8340 par olivia
Réponse de olivia sur le sujet Re:savoir si un utilisateur existe
merci janel

ca fonctionne mieux comme ça !!!


olivia

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

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