Téléverser les fichiers vers "/"
This commit is contained in:
95
insert_users.ps1
Normal file
95
insert_users.ps1
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user