Question Création compte utilisateur AD

Plus d'informations
il y a 7 ans 8 mois #25687 par Urakus
Bonjour,

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.

Plus d'informations
il y a 7 ans 8 mois #25695 par Philippe
Réponse de Philippe sur le sujet Re:Création compte utilisateur AD
salut Urakus

I)J'ai du mal à utiliser la fonction de recherche pour savoir si l'utilisateur existe déjà ou non

ton code fait une recherche sur le login :
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 \&quot;prénom nom\&quot;}

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

il n'y a pas de solution miracle, une boucle sera une solution la plus propre

J'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

que dire de ton erreur
comme tu l'écris sur la premiere ligne : l'utilisateur n'existe pas

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

Plus d'informations
il y a 7 ans 8 mois #25696 par Urakus
Réponse de Urakus sur le sujet Re:Création compte utilisateur AD

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 \&quot;prénom nom\&quot;}

L'erreur a été corrigé merci

il n'y a pas de solution miracle, une boucle sera une solution la plus propre

Je vois pas quelle genre de boucle faire pour faire plus propre

que dire de ton erreur
comme tu l'écris sur la premiere ligne : l'utilisateur n'existe pas

Oui c'est le script qui me dit qu'il n'existe pas mais la création ne s'effectue pas
[code:1]$SearchUser = Get-ADUser -Filter {Name -eq \&quot;prenom nom\&quot;} -SearchBase $OU

if ($SearchUser -ne \&quot;prenom nom\&quot;«»)
{
Write-Host \&quot;L'utilisateur $nomcomplet n'existe pas, création..\&quot;
}
else
{
Write-Host \&quot;L'utilisateur $nomcomplet existe déjà\&quot;
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 \&quot;Utilisateur ajouté: $nomcomplet et le mot de passe: $password\&quot;
}
catch
{
echo \&quot;Utilisateur non ajouté: $nomcomplet\&quot;
}[/code:1]

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

Plus d'informations
il y a 7 ans 8 mois #25698 par Philippe
Réponse de Philippe sur le sujet Re:Création compte utilisateur AD
je commence par la fin

Oui c'est le script qui me dit qu'il n'existe pas mais la création ne s'effectue pas

si tu pouvez me donner l'erreur du new-ADUser ça m'aiderai ! ;)

Je vois pas quelle genre de boucle faire pour faire plus propre

je rappel la question

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

c'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

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

Plus d'informations
il y a 7 ans 8 mois #25702 par Urakus
Réponse de Urakus sur le sujet Re:Création compte utilisateur AD

si tu pouvez me donner l'erreur du new-ADUser ça m'aiderai ! ;)

Finalement mon new-ADUser fonctionne

c'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

Il restera sur des if, il fonctionne bien comme cela

Le dernier soucis est quand je crée un utilisateur déjà dans la base
Il faudrait qu'il affiche le message suivant:
\&quot;L'utilisateur $nomcomplet existe déjà\&quot;

[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 \&quot;$prenom $nom\&quot;} -SearchBase $OU

if ($SearchUser -ne \&quot;$prenom $nom\&quot;)
{
Write-Host \&quot;L'utilisateur $nomcomplet n'existe pas, création..\&quot;
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 \&quot;AD01\&quot;)
{
Add-ADGroupMember -Identity 'GG_Extenda_Project_Admins' -Members $login
}
if ($sousgroupe -match \&quot;AD02\&quot;)
{
Add-ADGroupMember -Identity 'GG_Glory_Project_Admins' -Members $login
}
if ($sousgroupe -match \&quot;AD03\&quot;)


ETC...

if ($sousgroupe -match \&quot;C9\&quot;)
{
Add-ADGroupMember -Identity 'gg_ctx_users_test' -Members $login
}
Write-Host \&quot;L'utilisateur: $nomcomplet a été créé avec le mot de passe: $password\&quot;
}
else
{
Write-Host \&quot;L'utilisateur $nomcomplet existe déjà\&quot;
continue
}
}
catch
{
Write-Host \&quot;/!\ Erreur lors de la création de l'utilisateur: $nomcomplet\&quot;
}
[/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.

Plus d'informations
il y a 7 ans 8 mois #25704 par de França
Hello,

Ton test if ($SearchUser -ne \&quot;$prenom $nom\&quot;) fonctionne toujours car il est toujours vrais -&gt; 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 \&quot;$prenom $nom\&quot;«») [/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.

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