Comment créer de nouveaux utilisateurs d’Active Directory avec PowerShell

Le plus facile, pour créer un nouvel utilisateur dans un domaine Active Directory, est d’utiliser le composant logiciel enfichable MMC Utilisateurs et ordinateurs Active Directory. Mais que faire si vous devez créer de nombreux comptes d’utilisateur, ou si Utilisateurs et ordinateurs Active Directory n’est pas disponible pour une raison ou pour une autre ? Dans cet article, nous expliquons plusieurs manières de créer des comptes d’utilisateur Active Directory avec PowerShell en utilisant le cmdlet New-ADUser.

Créer de nouveaux comptes d’utilisateur à l’aide du Cmdlet New-ADUser

Quel cmdlet PowerShell permet de créer des objets utilisateurs ? Il s’agit du cmdlet New-ADUser, qui est inclus dans le module Active Directory PowerShell intégré à Microsoft Windows Server 2008R2/2012 et versions ultérieures. La première chose à faire est donc d’activer le module AD :

Import-Module ActiveDirectory

Voyons maintenant de plus près ce cmdlet New-ADUser. Nous obtenons sa syntaxe complète en exécutant la commande suivante :

Get-Command New-ADUser –Syntax

Une fois que l’on connaît la syntaxe, il est facile d’ajouter des utilisateurs à Active Directory :

New-ADUser B.Johnson

Vérifions maintenant si l’utilisateur a bien été ajouté, en listant tous les utilisateurs Active Directory à l’aide du script suivant :

Get-ADUser -Filter * -Properties samAccountName | select samAccountName

Le voilà, le dernier de la liste !

Créer un nouveau compte d’utilisateur Active Directory avec mot de passe

Les comptes sont créés avec les propriétés par défaut suivantes :

  • Compte créé dans le conteneur « Utilisateurs ».
  • Compte désactivé
  • Compte membre du groupe « Utilisateurs du domaine ».
  • Aucun mot de passe défini.

L’utilisateur doit réinitialiser le mot de passe à sa première connexion.

Donc, pour créer un nouveau compte réellement fonctionnel, nous devons l’activer avec le cmdlet Enable-ADAccount et lui donner un mot de passe avec le cmdlet Set-ADAccountPassword.

Créons un nouveau compte avec les attributs suivants :

  • Nom – Jack Robinson
  • Prénom – Jack
  • Nom de famille – Robinson
  • Nom du compte – J.Robinson
  • Nom principal de l’utilisateur – J.Robinson@enterprise.com
  • Adresse du chemin – “OU=Managers,DC=enterprise,DC=com”
  • Saisie du mot de passe
  • État – Activé

Voici le script à utiliser :

New-ADUser -Name "Jack Robinson" -GivenName "Jack" -Surname "Robinson" -SamAccountName "J.Robinson" -UserPrincipalName "J.Robinson@enterprise.com" -Path "OU=Managers,DC=enterprise,DC=com" -AccountPassword(Read-Host -AsSecureString "Input Password") -Enabled $true

Le paramètre Read-Host vous demandera de saisir un nouveau mot de passe. Remarquez que le mot de passe doit satisfaire les exigences de longueur, de complexité et d’historique de votre politique de sécurité pour le domaine.

Voyons maintenant les résultats en exécutant le cmdlet suivant :

Get-ADUser J.Robinson -Properties CanonicalName, Enabled, GivenName, Surname, Name, UserPrincipalName, samAccountName, whenCreated, PasswordLastSet  | Select CanonicalName, Enabled, GivenName, Surname, Name, UserPrincipalName, samAccountName, whenCreated, PasswordLastSet

Créer plusieurs utilisateurs d’Active Directory simultanément avec un script PowerShell

À présent, compliquons-nous un peu la tâche et créons dix comptes Active Directory similaires simultanément, par exemple, pour le cours d’informatique de notre entreprise, et définissons un mot de passe par défaut (P@ssw0rd) pour chacun d’eux. Pour envoyer le mot de passe par défaut dans un état protégé, nous devons nous servir du paramètre ConvertTo-SecureString. Nous utiliserons le script suivant :

$path="OU=IT,DC=enterprise,DC=com"
$username="ITclassuser"
$count=1..10
foreach ($i in $count)
{ New-AdUser -Name $username$i -Path $path -Enabled $True -ChangePasswordAtLogon $true  `

-AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -force) -passThru }

Apportons maintenant de la flexibilité à notre script en ajoutant le paramètre Read-Host, qui demandera le nom et le numéro des utilisateurs :

$path="OU=IT,DC=enterprise,DC=com"
$username="ITclassuser"
$count=1..10
foreach ($i in $count)
{ New-AdUser -Name $username$i -Path $path -Enabled $True -ChangePasswordAtLogon $true  `

-AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -force) -passThru }

Importer des utilisateurs d’AD à partir d’un fichier CSV

Une autre option de création d’utilisateurs dans AD consiste à les importer depuis un fichier CSV. Cette option est idéale lorsque vous avez une liste d’utilisateurs avec des détails personnels prédéfinis tels que :

  • Prénom
  • Nom
  • Nom d’utilisateur
  • Service
  • Mot de passe
  • Unité d’organisation

Le fichier CSV doit être encodé en UTF8 et contenir des données de contact qui ressemblent à ceci :

Le script suivant créera des objets utilisateurs activés pour tous les utilisateurs présents dans le fichier CSV qui n’ont pas encore de comptes dans AD. L’option « Réinitialiser le mot de passe lors de la prochaine connexion » sera activée pour les nouveaux comptes, vous pouvez donc utiliser votre mot de passe par défaut :

#Entrez un chemin d’accès vers votre fichier d’importation CSV
$ADUsers = Import-csv C:\scripts\newusers.csv

foreach ($User in $ADUsers)
{

       $Username    = $User.username
       $Password    = $User.password
       $Firstname   = $User.firstname
       $Lastname    = $User.lastname
    $Department = $User.department
       $OU           = $User.ou

       #Vérifiez si le compte utilisateur existe déjà dans AD
       if (Get-ADUser -F {SamAccountName -eq $Username})
       {
               #Si l’utilisateur existe, éditez un message d’avertissement
               Write-Warning "A user account $Username has already exist in Active Directory."
       }
       else
       {
              #Si un utilisateur n’existe pas, créez un nouveau compte utilisateur
          
        #Le compte sera créé dans I’unité d’organisation indiquée dans la variable $OU du fichier CSV ; n’oubliez pas de changer le nom de domaine dans la variable « -UserPrincipalName ».
              New-ADUser `
            -SamAccountName $Username `
            -UserPrincipalName "$Username@yourdomain.com" `
            -Name "$Firstname $Lastname" `
            -GivenName $Firstname `
            -Surname $Lastname `
            -Enabled $True `
            -ChangePasswordAtLogon $True `
            -DisplayName "$Lastname, $Firstname" `
            -Department $Department `
            -Path $OU `
            -AccountPassword (convertto-securestring $Password -AsPlainText -Force)

       }
}

Une fois le script exécuté, deux nouveaux utilisateurs, Edward Franklin et Bill Jackson, ont été ajoutés à notre domaine Active Directory :

Jetons un coup d’oeil à leurs détails en exécutant à nouveau le cmdlet Get-ADUser :

Get-ADUser E.Franklin -Properties CanonicalName, Enabled, GivenName, Surname, Name, UserPrincipalName, samAccountName, whenCreated, PasswordLastSet  | Select CanonicalName, Enabled, GivenName, Surname, Name, UserPrincipalName, samAccountName, whenCreated, PasswordLastSet

Conclusion

Vous savez désormais comment créer des utilisateurs dans Active Directory à l’aide des scripts PowerShell. Essayez de créer des comptes – individuels ou multiples – et d’importer des fichiers CSV vous-même sur des systèmes locaux ou distants. Souvenez-vous, le composant logiciel enfichable MMC Utilisateurs et ordinateurs Active Directory est idéal pour créer quelques utilisateurs avec des attributs étendus, mais PowerShell est bien plus performant pour importer un grand nombre de comptes d’utilisateur.