Question Recherche utilisateur AD

Plus d'informations
il y a 14 ans 9 mois #10014 par Julien
Recherche utilisateur AD a été créé par Julien
Bonjour,

Mon script a pour but de rechercher un utilisateur dans l'AD, cependant je souhaite faire en sorte que si il trouve un login déjà présent (homonyme), je propose de choisir un nouveau login et qu'il refasse une recherche.

Je pensais faire une boucle mais je sais pas du tout comment l'intégré étant donné que je suis dans une fonction.

[code:1]Function Recherche
{
param($sAMAccountName)

try
{
$check = get-ADuser $sAMAccountName

if($check)
{
$exist = 1
}
else
{
$exist = 0
}
}
catch
{
$exist = \"\"
}
return $exist
}
$exist = Recherche $sAMAccountName
if($exist)
{
Write-Host \"Il existe déjà un utilisateur avec le login\" : $sAMAccountName -ForegroundColor Red
write-host ( \"\" )
# Modification du sAMAccountName si utilisateur existant
$sAMmodif = (Read-Host \"Indiquez un autre login en majuscules \"«»)
$sAMAccountName = $sAMmodif.Substring(0,[System.Math]::Min(8,$sAMmodif.Length))
write-host \"Nouveau login enregistré, nouvelle vérification en cours\"
}
else
{
Write-Host \"Il n'y a pas d'homonyme présent, création en cours\" -ForegroundColor Green
}

recherche[/code:1]

Merci de votre aide<br><br>Message édité par: NoCn, à: 10/08/11 15:40

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

Plus d'informations
il y a 14 ans 9 mois #10021 par Gabriel
Réponse de Gabriel sur le sujet Re:Recherche utilisateur AD
Salut NoCn

vite fait, la fonction a juste besoin de retourner que le compte existe ou pas.

donc si le compte existe tu retourne quelquechose, si le compte n'existe pas tu ne retourne rien.

tu utilises ensuite le résultat de la commande

je suppose que tu as mis try/catch pour chopper une erreur de la commande get-ADuser, sinon dans ce cas autant simplifier.


[code:1]
Function Recherche {
param($sAMAccountName)

$check = get-ADuser $sAMAccountName
if($check) {
return $True
}
}

$exist = Recherche $sAMAccountName

do {
Write-Host \&quot;Il existe déjà un utilisateur avec le login : $sAMAccountName `n\&quot; -ForegroundColor Red
# Modification du sAMAccountName si utilisateur existant
$sAMmodif = (Read-Host \&quot;Indiquez un autre login en majuscules \&quot;«»)
$sAMAccountName = $sAMmodif.Substring(0,[System.Math]::Min(8,$sAMmodif.Length))
write-host \&quot;Nouveau login enregistré, nouvelle vérification en cours\&quot;
} until (!$exist)

if (!$exist) {
Write-Host \&quot;Il n'y a pas d'homonyme présent, création en cours\&quot; -ForegroundColor Green
}
[/code:1]

have fun

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

Plus d'informations
il y a 14 ans 9 mois #10025 par Julien
Réponse de Julien sur le sujet Re:Recherche utilisateur AD
Salut tonic8,

Merci pour ta réponse, cependant ça ne fonctionne toujours pas :/

Si je met un utilisateur existant, il me met bien qu'il existe, cependant si j'en met un autre qui je suis sur n'y est pas, il me dit qu'il existe aussi.

Et inversement, si je met un utilisateur qui existe pas, des le lancement du script, il me génère une erreur (d’où mon try/catch), l'erreur m'indique bien qu'il ne le trouve pas mais ça écrit qu'il y a un homonyme.

Par la suite il me repropose de mettre un login, je met un utilisateur qui existe, mais il me renvoi qu'il n'existe pas :

Je suis un peu perdu

[code:1]
Indiquez le prénom de l'utilisateur : Toto

Indiquez le nom de l'utilisateur : DOP

Le login de l'utilisateur sera : TDOP

Vérification si homonyme présent dans l'AD :

Get-ADUser : Cannot find an object with identity: 'TDOP' under: 'DC=INT,DC=AD,D
C=ME,DC=FR'.
At C:\Users\nocn\Documents\new\creationuserad.ps1:31 char:28
+ $check = get-ADuser &lt;&lt;&lt;&lt; $sAMAccountName
+ CategoryInfo : ObjectNotFound: (TDOP:ADUser) [Get-ADUser], ADId
entityNotFoundException
+ FullyQualifiedErrorId : Cannot find an object with identity: 'TDOP' unde
r: 'DC=INT,DC=AD,DC=ME,DC=FR'.,Microsoft.ActiveDirectory.Management.Comma
nds.GetADUser
Il existe déjà un utilisateur avec le login : TDOP

Indiquez un autre login en majuscules : TDOI

Nouveau login enregistré, nouvelle vérification en cours

Il n'y a pas d'homonyme présent, création en cours

Get-ADUser : Cannot validate argument on parameter 'Identity'. The argument is
null. Supply a non-null argument and try the command again.
At C:\Users\nocn\Documents\new\creationuserad.ps1:31 char:28
+ $check = get-ADuser &lt;&lt;&lt;&lt; $sAMAccountName
+ CategoryInfo : InvalidData: (:«») [Get-ADUser], ParameterBindingV
alidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.Activ
eDirectory.Management.Commands.GetADUser

********** Création en cours... **********

Nouveau login : TDOI
[/code:1]

Message édité par: NoCn, à: 11/08/11 12:07<br><br>Message édité par: NoCn, à: 11/08/11 12:08

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

Plus d'informations
il y a 14 ans 8 mois #10139 par Julien
Réponse de Julien sur le sujet Re:Recherche utilisateur AD
Bon bah voila j'ai trouvé la solution, pas eu le temps de posté depuis :
[code:1]if(get-ADuser -filter {Samaccountname -like $sAMAccountName}) {
Do {
Write-Host \&quot;Il existe déjà un utilisateur avec le login : $sAMAccountName\&quot;`n -ForegroundColor Red
# Modification du sAMAccountName
$sAMmodif = (Read-Host \&quot;Indiquez un autre login en majuscules \&quot;«»)
Write-Host \&quot;\&quot;
$sAMAccountName = $sAMmodif.Substring(0,[System.Math]::Min(8,$sAMmodif.Length))
}
While( $sAMmodif = get-ADuser -filter {Samaccountname -like $sAMmodif} )
}[/code:1]

Si jamais vous avez des solutions a apporté, n'hésitez pas.

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

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