Voici un script Powershell qui permet d’ajouter dynamiquement des utilisateurs dans une OU « Utilisateurs » d’un annuaire active Directory.

Le fichier contenant les utilisateurs se trouve dans « Documents », et ressemble à ceci :

FirstName;LastName;Username;UserPrincipalName;OUPath
Alexandre;TEST;atest;atest@deploys.local;OU=Utilisateurs,DC=DEPLOYS,DC=LOCAL
Jean;DUPOND;jdupond;jdupond@deploys.local;OU=Utilisateurs,DC=DEPLOYS,DC=LOCAL

Et le script (appelé « CreateUser.ps1 ») :

# Import du module Active Directory pour pouvoir utiliser les cmdlets spécialisées
Import-Module ActiveDirectory

# Définition d'un mot de passe sécurisé qui sera utilisé pour tous les nouveaux utilisateurs
$password = ConvertTo-SecureString "Motdepassetemporaire123" -AsPlainText -Force

# Spécification du chemin vers le fichier CSV contenant les informations des utilisateurs
$CSVFile = "C:\Users\Administrateur\Documents\users.csv"
# Importation des données du fichier CSV en utilisant un point-virgule comme délimiteur
$CSVData = Import-Csv -Path $CSVFile -Delimiter ";" -Encoding UTF8

# Affichage des données importées pour vérification par l'utilisateur du script
Write-Output "Vérification du fichier CSV :"
$CSVData

# Boucle pour traiter chaque ligne (chaque utilisateur) du fichier CSV
Foreach ($User in $CSVData) {
    # Attribution des données CSV aux variables pour un usage facile dans le script
    $prenom = $User.FirstName
    $nom = $User.LastName
    $login = $User.Username
    $compte = $User.UserPrincipalName
    $OUPath = $User.OUPath

    # Vérification de l'existence de l'utilisateur dans Active Directory en utilisant son SamAccountName
    if (Get-ADUser -Filter "SamAccountName -eq '$login'") {
        # Si l'utilisateur existe déjà, un avertissement est généré
        Write-Warning "L'utilisateur $login est déjà présent dans l'annuaire"
    }
    else {
        # Si l'utilisateur n'existe pas, il est créé avec les informations fournies
        New-ADUser  -Name "$nom $prenom" `
                    -GivenName $prenom `
                    -Surname $nom `
                    -SamAccountName $login `
                    -UserPrincipalName $compte `
                    -Path $OUPath `
                    -AccountPassword $password `
                    -ChangePasswordAtLogon $true `
                    -Enabled $true
        # Un message de confirmation est affiché après la création de chaque utilisateur
        Write-Output "Utilisateur ajouté à l'AD : $login"
    }
}

Quelques points à noter :

  • Le mot de passe par défaut est défini en clair dans le script et converti en une chaîne sécurisée, ce qui n’est pas une pratique recommandée en termes de sécurité. Il serait préférable de demander à l’utilisateur d’entrer le mot de passe lors de l’exécution du script ou d’utiliser une méthode plus sécurisée pour gérer les mots de passe.
  • La cmdlet Import-Csv est utilisée pour lire les données d’un fichier CSV où les champs sont séparés par des points-virgules (;), ce qui est courant dans les systèmes où la virgule n’est pas utilisée comme séparateur de liste standard (par exemple, dans certains paramétrages régionaux européens).
  • La boucle foreach parcourt chaque ligne du fichier CSV et tente de créer un nouvel utilisateur avec les données fournies.
  • La cmdlet Get-ADUser avec le filtre -Filter est utilisée pour vérifier si un utilisateur avec le SamAccountName spécifié existe déjà dans AD.
  • Si l’utilisateur n’existe pas, la cmdlet New-ADUser est utilisée pour créer l’utilisateur avec les paramètres spécifiés.
  • L’option -ChangePasswordAtLogon est définie sur $true, ce qui oblige l’utilisateur à changer son mot de passe lors de sa première connexion.
  • L’attribut -Enabled est défini sur $true, ce qui signifie que le compte sera activé immédiatement après sa création.
  • Dans PowerShell, le caractère backtick ` est utilisé comme caractère d’échappement, y compris pour indiquer que la ligne de commande continue sur la ligne suivante. Cela est souvent utilisé pour améliorer la lisibilité des scripts en permettant de séparer des commandes longues sur plusieurs lignes.

Ressources utiles :

https://www.it-connect.fr/chapitres/creer-des-utilisateurs-dans-lad-a-partir-dun-csv/

https://www.alitajran.com/import-ad-users-from-csv-powershell