7 octobre 2026

Création d’un compte utilisateur Active Directory avec mot de passe expiré via PowerShell

Création d’un compte utilisateur Active Directory avec mot de passe expiré via PowerShellwindows
Photo: Pixabay / Pexels

Dans un environnement Windows Server avec Active Directory, il est fréquent de devoir créer de nouveaux comptes utilisateurs de façon automatisée. Ce tutoriel montre comment créer un compte, définir un mot de passe temporaire, le désactiver temporairement, puis forcer le changement de mot de passe à la première connexion, le tout via PowerShell.

🖥️ Illustration
PowerShell – Administrateur AD
PS C:\> Import-Module ActiveDirectory
PS C:\> $SamAccountName = « jdupont »
PS C:\> $NomComplet = « Jean Dupont »
PS C:\> $OU = « OU=Utilisateurs,DC=contoso,DC=com »
PS C:\> $MotDePasseTemp = ConvertTo-SecureString « TempPass!2024 » -AsPlainText -Force
PS C:\> New-ADUser -Name $NomComplet -SamAccountName $SamAccountName -AccountPassword $MotDePasseTemp -Enabled $false -Path $OU -ChangePasswordAtLogon $true -PasswordNeverExpires $false
PS C:\> Enable-ADAccount -Identity $SamAccountName
PS C:\> Get-ADUser jdupont -Properties PasswordExpired,PasswordLastSet,Enabled | Select Name,Enabled,PasswordExpired,PasswordLastSet
Name Enabled PasswordExpired PasswordLastSet
—- ——- ————— —————-
Jean Dupont True False 01/10/2026 08:15:32

Contexte

Vous êtes administrateur AD et vous devez provisionner un compte pour un nouveau collaborateur. Vous devez vous assurer que le mot de passe initial ne reste pas valide et que l’utilisateur devra le changer dès sa première connexion, afin de respecter les bonnes pratiques de sécurité.

AD user création PowerShellwindows
Photo: panumas nikhomkhai / Pexels

Quand l’utiliser

  • Intégration d’un nouvel employé dans l’entreprise.
  • Création massive d’utilisateurs à partir d’un CSV.
  • Automatisation d’un processus d’onboarding via scripts ou orchestrateurs.

⚙️ Étapes

🔹

1. Importer le module ActiveDirectory

Import-Module ActiveDirectory

🔹

2. Définir les variables du nouvel utilisateur

$SamAccountName = "jdupont"
$NomComplet = "Jean Dupont"
$OU = "OU=Utilisateurs,DC=contoso,DC=com"
$MotDePasseTemp = ConvertTo-SecureString "TempPass!2024" -AsPlainText -Force

🔹

3. Créer le compte utilisateur avec le mot de passe temporaire

New-ADUser `
    -Name $NomComplet `
    -SamAccountName $SamAccountName `
    -AccountPassword $MotDePasseTemp `
    -Enabled $false `
    -Path $OU `
    -ChangePasswordAtLogon $true `
    -PasswordNeverExpires $false

🔹

4. Activer le compte

Enable-ADAccount -Identity $SamAccountName

🔹

5. Vérifier la configuration

Get-ADUser $SamAccountName -Properties PasswordExpired, PasswordLastSet, Enabled | 
Select-Object Name, Enabled, PasswordExpired, PasswordLastSet

⚡ Méthode alternative

Si vous préférez utiliser un CSV pour créer plusieurs comptes en même temps, vous pouvez adapter le script :

Import-Csv "C:\temp\users.csv" | ForEach-Object {
    $pwd = ConvertTo-SecureString $_.TempPassword -AsPlainText -Force
    New-ADUser -Name $_.FullName -SamAccountName $_.Login `
        -AccountPassword $pwd -Enabled $false -Path $_.OU `
        -ChangePasswordAtLogon $true
    Enable-ADAccount -Identity $_.Login
}

⚠️ Bonnes pratiques de sécurité

  • Utilisez toujours -AsPlainText -Force uniquement pour des mots de passe temporaires générés de façon contrôlée.
  • Placez les comptes dans une OU dédiée aux nouveaux employés pour appliquer des GPO spécifiques.
  • Activez la politique Passwords must meet complexity requirements au niveau du domaine.
  • Enregistrez les logs d’audit (Get-EventLog -LogName Security) pour tracer la création des comptes.
  • Supprimez ou désactivez le compte si le collaborateur ne rejoint pas l’entreprise dans les 30 jours.

✅ Conclusion

Ce petit script PowerShell vous permet de créer un compte AD sécurisé, de le désactiver temporairement, puis de forcer le changement du mot de passe à la première connexion. Vous pouvez l’étendre pour gérer des imports massifs via CSV ou l’intégrer à des solutions d’orchestration comme Azure Automation ou Ansible.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *