Contexte
Une entreprise intègre 15 nouveaux collaborateurs le même jour suite à une fusion. Le service RH transmet un fichier nouveaux_employes.csv à l’administrateur la veille, qui écrit un script PowerShell pour créer les comptes AD en masse et gagner du temps.
Le fichier CSV transmis par le RH :
csv
Prenom,Nom,Service,MotDePasse,Actif,ChangerMotDePasse
Jean,Dupont,Comptabilité,Winter2024!,True,False
Marie,Martin,RH,Winter2024!,True,False
Pierre,Bernard,Informatique,Winter2024!,True,False
...Le script écrit par l’administrateur :
powershell
Import-Csv "C:\RH\nouveaux_employes.csv" | ForEach-Object {
$password = ConvertTo-SecureString $_.MotDePasse -AsPlainText -Force
New-ADUser `
-GivenName $_.Prenom `
-Surname $_.Nom `
-Name "$($_.Prenom) $($_.Nom)" `
-SamAccountName "$($_.Prenom[0])$($_.Nom)".ToLower() `
-AccountPassword $password `
-Enabled $_.ChangerMotDePasse `
-ChangePasswordAtLogon $_.Actif `
-Path "OU=Utilisateurs,DC=corp,DC=lan"
}Le lendemain matin, les 15 collaborateurs se présentent avec leur poste, tentent de se connecter et aucun n’y arrive. Certains obtiennent :
« Ce compte est désactivé. Veuillez contacter votre administrateur. »
D’autres parviennent à saisir leur mot de passe mais tombent sur :
« Le mot de passe de cet utilisateur a expiré. Veuillez contacter votre administrateur. »
L’administrateur vérifie dans dsa.msc : les 15 comptes sont bien créés, dans la bonne OU, avec les bons groupes. Pourtant personne ne peut se connecter.
Problème
Les comptes sont créés mais inutilisables. Identifier les erreurs dans le script et corriger pour que les comptes soient directement opérationnels à la création.
Answer on:
Salut, je pense aux parms inversés : « -ChangePasswordAtLogon $_.Actif » et « $_.Enabled ».
Après ce script est forcément mauvais car si deux utilisateurs ont le même début de prénom ça plante (homomorphe).
Pour ça j’avais mis en place un check de l’AD avant, et si collision on rajouter une lettre du prénom jusqu’à obtenir un compte unique.
Mettre un peu de log aussi 🙂
Bonne journée!