# ----------------------------------------------------------- # Script : insert_users.ps1 # Description : Importation massive d'utilisateurs dans l'AD # depuis un fichier CSV. # Auteur : 7ka1 # ----------------------------------------------------------- # --- CONFIGURATION --- # Chemin vers le fichier CSV (assurez-vous que le nom correspond à votre fichier généré) $CsvFilePath = ".\happy_koalas_employees_with_passwords.csv" # Nom de domaine AD (À ADAPTER à votre environnement, ex: "happykoalas.com") $DomainDN = "DC=happykoalas,DC=com" # Racine où les OU des départements seront créées (optionnel, sinon à la racine du domaine) # Exemple : "OU=Employees,DC=happykoalas,DC=com" # Ici, on les met à la racine pour simplifier : $BaseDN = $DomainDN # --- IMPORTATION DU MODULE AD --- Import-Module ActiveDirectory # --- TRAITEMENT --- # Importation du CSV (Délimiteur point-virgule selon votre fichier précédent) $Users = Import-Csv -Path $CsvFilePath -Delimiter ";" Write-Host "Début de l'importation des utilisateurs..." -ForegroundColor Cyan foreach ($User in $Users) { # Récupération des données de l'utilisateur $FirstName = $User.FirstName $LastName = $User.LastName $SamAccount = $User.UserName $Password = $User.Password $Email = $User.Email $Department = $User.Department $JobTitle = $User.JobTitle # Définition du nom complet (CN) $DisplayName = "$FirstName $LastName" # 1. Gestion de l'OU (Organisation Unit) # On construit le chemin de l'OU : OU=NomDepartement,DC=... $TargetOU = "OU=$Department,$BaseDN" # Vérifier si l'OU existe, sinon la créer try { if (-not (Get-ADOrganizationalUnit -Filter "Name -eq '$Department'" -ErrorAction SilentlyContinue)) { Write-Host "L'OU '$Department' n'existe pas. Création en cours..." -ForegroundColor Yellow New-ADOrganizationalUnit -Name $Department -Path $BaseDN } } catch { Write-Host "Erreur lors de la vérification/création de l'OU $Department : $_" -ForegroundColor Red continue # Passe à l'utilisateur suivant en cas d'erreur critique sur l'OU } # 2. Création de l'utilisateur try { # Vérifier si l'utilisateur existe déjà if (Get-ADUser -Filter "SamAccountName -eq '$SamAccount'" -ErrorAction SilentlyContinue) { Write-Host "L'utilisateur $SamAccount existe déjà. Ignoré." -ForegroundColor DarkGray } else { # Conversion du mot de passe en SecureString $SecurePassword = ConvertTo-SecureString $Password -AsPlainText -Force # Paramètres de création $UserParams = @{ Name = $DisplayName GivenName = $FirstName Surname = $LastName SamAccountName = $SamAccount UserPrincipalName = "$SamAccount@happykoalas.com" # Adapter le suffixe UPN si besoin Path = $TargetOU AccountPassword = $SecurePassword Enabled = $true ChangePasswordAtLogon = $true # Exigence demandée : changer MDP à la première connexion EmailAddress = $Email Department = $Department Title = $JobTitle Description = "Compte créé via script insert_users.ps1" } # Création effective New-ADUser @UserParams Write-Host "Utilisateur créé : $SamAccount dans $TargetOU" -ForegroundColor Green } } catch { Write-Host "Erreur lors de la création de l'utilisateur $SamAccount : $_" -ForegroundColor Red } } Write-Host "Importation terminée." -ForegroundColor Cyan