From 5da9f933444a689523dd96ad98d9177e12721fe6 Mon Sep 17 00:00:00 2001 From: 7ka1 <7ka1@noreply.localhost> Date: Thu, 20 Nov 2025 15:17:17 +0000 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9verser=20les=20fichiers=20vers=20?= =?UTF-8?q?"/"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- insert_users.ps1 | 95 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 insert_users.ps1 diff --git a/insert_users.ps1 b/insert_users.ps1 new file mode 100644 index 0000000..61f2b1e --- /dev/null +++ b/insert_users.ps1 @@ -0,0 +1,95 @@ +# ----------------------------------------------------------- +# 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