Question
Recherche utilisateur AD
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
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
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.
- Gabriel
-
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 248
- Remerciements reçus 1
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 \"Il existe déjà un utilisateur avec le login : $sAMAccountName `n\" -ForegroundColor Red
# 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\"
} until (!$exist)
if (!$exist) {
Write-Host \"Il n'y a pas d'homonyme présent, création en cours\" -ForegroundColor Green
}
[/code:1]
have fun
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 \"Il existe déjà un utilisateur avec le login : $sAMAccountName `n\" -ForegroundColor Red
# 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\"
} until (!$exist)
if (!$exist) {
Write-Host \"Il n'y a pas d'homonyme présent, création en cours\" -ForegroundColor Green
}
[/code:1]
have fun
Connexion ou Créer un compte pour participer à la conversation.
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
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 <<<< $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 <<<< $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
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 <<<< $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 <<<< $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.
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
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 \"Il existe déjà un utilisateur avec le login : $sAMAccountName\"`n -ForegroundColor Red
# Modification du sAMAccountName
$sAMmodif = (Read-Host \"Indiquez un autre login en majuscules \"«»)
Write-Host \"\"
$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.
[code:1]if(get-ADuser -filter {Samaccountname -like $sAMAccountName}) {
Do {
Write-Host \"Il existe déjà un utilisateur avec le login : $sAMAccountName\"`n -ForegroundColor Red
# Modification du sAMAccountName
$sAMmodif = (Read-Host \"Indiquez un autre login en majuscules \"«»)
Write-Host \"\"
$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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Recherche utilisateur AD