Files
insert_users/insert_users.ps1

96 lines
3.8 KiB
PowerShell

# -----------------------------------------------------------
# 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