Question
Création compte utilisateur AD
- Urakus
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
Je suis actuellement en stage et l'un de mes projets est de créer automatiquement des utilisateurs qui seront mit au bon endroit dans l'Active Directory via un script PowerShell avec un MDP généré aléatoirement, et en ajoutant l'utilisateur dans un ou plusieurs groupe(s)
Je sollicite votre aide sur mon script que j'ai pondu sur plusieurs points, en espérant que vous puissiez m'éclairer.
Le code commence de cette façon:
[code:1]
foreach ($user in $users)
{
$prenom = $user.prenom
$nom = $user.nom
$sousgroupe = $user.sousgroupe
$login = $user.prenom + \".\" + $user.nom
$nomcomplet = $user.prenom + \" \" + $user.nom
$petitprenom = $prenom.Substring(0,1)
$petitnom = $nom.Substring(0,1)
$initiale = $petitprenom + $petitnom
[/code:1]
I)J'ai du mal à utiliser la fonction de recherche pour savoir si l'utilisateur existe déjà ou non
Si l'utilisateur qu'on crée a le même nom + prénom que celui dans la base alors on passe à la création de l'utilisateur suivant
Si l'utilisateur été déjà créé auparavant, on devra récupérer son numéro de matricule en la stockant dans $nummat
[code:1]
$SearchUser = Get-ADUser -Filter {SamAccountName -eq $login} -SearchBase $OU
if ($SearchUser -ne $login)
{
Write-Host \"L'utilisateur n'existe pas, création..\"
}
else
{
Write-Host \"L'utilisateur \" + $nomcomplet + \" \" + $nummat + \" existe déjà*\"
continue
}
[/code:1]
II)Je voudrais savoir comment utiliser la fonction Add-ADGroupeMember avec une multitude de if (ou une façon plus courte) car il y a une centaine de groupes, chaque utilisateur peut être membre d'un ou plusieurs groupes à la fois selon le contenu de $sousgroupe
[code:1]
if ($sousgroupe -match \"AD01\"«»)
{
Add-ADGroupMember -Identity GG_Extenda_Project_Admins -Path \"OU=Admins, OU=Groups, OU=Entreprise, DC=entreprise, DC=lgn\" -Members $login
}
if ($sousgroupe -match \"AD02\"«»)
{
Add-ADGroupMember -Identity GG_Glory_Project_Admins -Path \"OU=Admins, OU=Groups, OU=Entreprise, DC=entreprise, DC=lgn\" -Members $login
}
etc..
[/code:1]
J'ai des erreurs juste au niveau de l'ajout des groupes:
[code:1]
PS C:\Users\adm\Desktop> C:\Users\adm\Desktop\CreationUtilisateur-V2.1.ps1
L'utilisateur n'existe pas, création..
Add-ADGroupMember : Cannot find an object with identity: 'hello world' under: 'DC=entreprise,DC=lgn'.
At C:\Users\adm\Desktop\CreationUtilisateur-V2.1.ps1:76 char:3
+ Add-ADGroupMember -Identity \"CN=GG_Extenda_Project_Admins, OU=Admins, OU=Group ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (hello world:ADPrincipal) [Add-ADGroupMember], ADIdentityNotFoundException
+ FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember
[/code:1]
Merci d'avance pour la lecture de ce post et vos réponses s'il y en a.
En vous souhaitant une bonne journée
Message édité par: Urakus, à: 29/06/18 09:27
Message édité par: Urakus, à: 29/06/18 14:56<br><br>Message édité par: Urakus, à: 29/06/18 14:57
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
ton code fait une recherche sur le login :I)J'ai du mal à utiliser la fonction de recherche pour savoir si l'utilisateur existe déjà ou non
Get-ADUser -Filter {SamAccountName -eq $login}
si tu veux faire une recherche sur le nom utilisé l'attribut Name dans l'ordre prénom puis nom :
Get-ADUser -Filter {Name -eq \"prénom nom\"}
il n'y a pas de solution miracle, une boucle sera une solution la plus propreII)Je voudrais savoir comment utiliser la fonction Add-ADGroupeMember avec une multitude de if (ou une façon plus courte) car il y a une centaine de groupes, chaque utilisateur peut être membre d'un ou plusieurs groupes à la fois selon le contenu de $sousgroupe
que dire de ton erreurJ'ai des erreurs juste au niveau de l'ajout des groupes:
L'utilisateur n'existe pas, création..
Add-ADGroupMember : Cannot find an object with identity: 'hello world' under
comme tu l'écris sur la premiere ligne : l'utilisateur n'existe pas
Connexion ou Créer un compte pour participer à la conversation.
- Urakus
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
L'erreur a été corrigé mercisi tu veux faire une recherche sur le nom utilisé l'attribut Name dans l'ordre prénom puis nom :
Get-ADUser -Filter {Name -eq \"prénom nom\"}
Je vois pas quelle genre de boucle faire pour faire plus propreil n'y a pas de solution miracle, une boucle sera une solution la plus propre
Oui c'est le script qui me dit qu'il n'existe pas mais la création ne s'effectue pasque dire de ton erreur
comme tu l'écris sur la premiere ligne : l'utilisateur n'existe pas
[code:1]$SearchUser = Get-ADUser -Filter {Name -eq \"prenom nom\"} -SearchBase $OU
if ($SearchUser -ne \"prenom nom\"«»)
{
Write-Host \"L'utilisateur $nomcomplet n'existe pas, création..\"
}
else
{
Write-Host \"L'utilisateur $nomcomplet existe déjà\"
continue
}
try
{
New-ADUser -Name $nomcomplet -SamAccountName $login -UserPrincipalName $login -DisplayName $nomcomplet -GivenName $prenom -Surname $nom -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) -Path $OU -Enabled $true
echo \"Utilisateur ajouté: $nomcomplet et le mot de passe: $password\"
}
catch
{
echo \"Utilisateur non ajouté: $nomcomplet\"
}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
si tu pouvez me donner l'erreur du new-ADUser ça m'aiderai !Oui c'est le script qui me dit qu'il n'existe pas mais la création ne s'effectue pas
je rappel la questionJe vois pas quelle genre de boucle faire pour faire plus propre
c'est le problème de tous les adminsJe voudrais savoir comment utiliser la fonction Add-ADGroupeMember avec une multitude de if (ou une façon plus courte) car il y a une centaine de groupes, chaque utilisateur peut être membre d'un ou plusieurs groupes à la fois selon le contenu de $sousgroupe
l'attribution de permission à des utilisateur via la methode AGDLP peut te venir en aide
mais pour ton script si tu n'a pas une organisation par fonction comme comptable ou directeur commercial, ça va pas d'aider
tu peut rester sur des if ou utilisé un switch
mais si ta une centaine de groupe ça va faire un long script
Connexion ou Créer un compte pour participer à la conversation.
- Urakus
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 5
- Remerciements reçus 0
Finalement mon new-ADUser fonctionnesi tu pouvez me donner l'erreur du new-ADUser ça m'aiderai !
Il restera sur des if, il fonctionne bien comme celac'est le problème de tous les admins
l'attribution de permission à des utilisateur via la methode AGDLP peut te venir en aide
mais pour ton script si tu n'a pas une organisation par fonction comme comptable ou directeur commercial, ça va pas d'aider
tu peut rester sur des if ou utilisé un switch
mais si ta une centaine de groupe ça va faire un long script
Le dernier soucis est quand je crée un utilisateur déjà dans la base
Il faudrait qu'il affiche le message suivant:
\"L'utilisateur $nomcomplet existe déjà\"
[code:1]try
{
#//Cherche si l'utilisateur existe déjà dans Active Directory, si oui passe au suivant sinon continue la création
$SearchUser = Get-ADUser -Filter {Name -eq \"$prenom $nom\"} -SearchBase $OU
if ($SearchUser -ne \"$prenom $nom\")
{
Write-Host \"L'utilisateur $nomcomplet n'existe pas, création..\"
New-ADUser -Name $nomcomplet -SamAccountName $login -UserPrincipalName $login -DisplayName $nomcomplet -GivenName $prenom -Surname $nom -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force) -Path $OU -Enabled $true
#//Selon le groupe de l'on met a l'utiliseur, celui-ci sera placé dans le groupe qu'il doit avoir
#//On part du principe que la personne qui a écrit le fichier CSV connait les groupes ou possède une aide pour le remplir
#//Si le groupe commence par AD puis un nombre, il ajoute l'utilisateur dans le groupe correspondant dans Admins
if ($sousgroupe -match \"AD01\")
{
Add-ADGroupMember -Identity 'GG_Extenda_Project_Admins' -Members $login
}
if ($sousgroupe -match \"AD02\")
{
Add-ADGroupMember -Identity 'GG_Glory_Project_Admins' -Members $login
}
if ($sousgroupe -match \"AD03\")
ETC...
if ($sousgroupe -match \"C9\")
{
Add-ADGroupMember -Identity 'gg_ctx_users_test' -Members $login
}
Write-Host \"L'utilisateur: $nomcomplet a été créé avec le mot de passe: $password\"
}
else
{
Write-Host \"L'utilisateur $nomcomplet existe déjà\"
continue
}
}
catch
{
Write-Host \"/!\ Erreur lors de la création de l'utilisateur: $nomcomplet\"
}
[/code:1]
Je pense que mon erreur vient de $SearchUser = Get-ADUser mais je vois pas comment je pourrais tourner la chose<br><br>Message édité par: Urakus, à: 3/07/18 15:45
Connexion ou Créer un compte pour participer à la conversation.
- de França
- Hors Ligne
- Membre senior
-
- Messages : 67
- Remerciements reçus 0
Ton test if ($SearchUser -ne \"$prenom $nom\") fonctionne toujours car il est toujours vrais -> un objet ne sera jamais égal à une string.
Get-AdUser te renvois un objet avec différentes propriétés, il faut donc sélectionner le nom avant le test:
[code:1]if($SearchUser.Name -ne \"$prenom $nom\"«») [/code:1]
Pour debuger la prochaine fois affiche ta variable $SearchUser et tu verras que ça n'est pas une simple string, tu peux égalment utiliser la méthode .gettype().<br><br>Message édité par: unfam0us, à: 4/07/18 07:56
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Création compte utilisateur AD