commit 40144fe4fc12d576401ecf2bf8229508c755dc45 Author: 7ka1 <7ka1@noreply.localhost> Date: Thu Nov 20 15:23:34 2025 +0000 Téléverser les fichiers vers "/" diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..a0a67b4 --- /dev/null +++ b/readme.md @@ -0,0 +1,84 @@ +# 🐨 Automatisation Gestion Utilisateurs - Happy Koalas + +Ce projet contient une suite d'outils pour automatiser la gestion des comptes utilisateurs de l'entreprise **Happy Koalas**. Il couvre le cycle de vie de la création des comptes (avec mots de passe sécurisés) jusqu'à la désactivation ciblée. + +## 📂 Contenu du projet + +Le projet se compose de trois scripts principaux : + +1. **`generate_passwords.py`** (Python) : Génère des mots de passe aléatoires et sécurisés pour une liste d'employés. +2. **`insert_users.ps1`** (PowerShell) : Crée les utilisateurs dans l'Active Directory et les place dans les bonnes OUs. +3. **`update_expiration_date.ps1`** (PowerShell) : Script de maintenance pour expirer automatiquement certains comptes (Production/Assembler). + +--- + +## 🛠 Prérequis + +### Pour le script Python +* **Python 3.x** installé. +* La bibliothèque **Pandas**. + ```bash + pip install pandas + ``` + +### Pour les scripts PowerShell +* Windows Server avec le rôle **Active Directory Domain Services (AD DS)**. +* Le module PowerShell Active Directory (inclus sur les contrôleurs de domaine ou via RSAT). +* Des privilèges **Administrateur du domaine**. + +--- + +## 🚀 Guide d'utilisation étape par étape + +### Étape 1 : Génération des mots de passe +*Fichier : `generate_passwords.py`* + +Ce script prend le fichier CSV brut des RH et ajoute une colonne `Password` avec un mot de passe de 8 caractères (Majuscule, minuscule, chiffre, spécial). + +1. Placez le fichier source `Projet 01 - happy_koalas_employees.csv` dans le même dossier. +2. Exécutez le script : + ```bash + python generate_passwords.py + ``` +3. **Résultat :** Un nouveau fichier `happy_koalas_employees_with_passwords.csv` est créé. + +### Étape 2 : Insertion dans l'Active Directory +*Fichier : `insert_users.ps1`* + +Ce script lit le fichier CSV généré à l'étape 1 et crée les comptes dans l'AD. + +1. Ouvrez PowerShell en tant qu'**Administrateur**. +2. Modifiez la variable `$DomainDN` dans le script si nécessaire (par défaut : `DC=happykoalas,DC=com`). +3. Exécutez le script : + ```powershell + .\insert_users.ps1 + ``` +4. **Actions effectuées :** + * Vérification/Création des OUs (ex: `OU=IT`, `OU=Production`). + * Création des utilisateurs. + * Configuration de l'option "L'utilisateur doit changer le mot de passe à la prochaine ouverture de session". + +### Étape 3 : Gestion des départs (Expiration) +*Fichier : `update_expiration_date.ps1`* + +Ce script a été conçu suite à la réorganisation du département Production. Il cible spécifiquement les **Assemblers**. + +1. Ouvrez PowerShell en tant qu'**Administrateur**. +2. Exécutez le script : + ```powershell + .\update_expiration_date.ps1 + ``` +3. **Action effectuée :** Tous les utilisateurs ayant le département "Production" et le titre "Assembler" voient leur compte expirer immédiatement (Date d'expiration = J-1). + +--- + +## 📦 Structure des fichiers + +```text +. +├── README.md # Documentation +├── generate_passwords.py # Script de génération (Python) +├── insert_users.ps1 # Script de création AD (PowerShell) +├── update_expiration_date.ps1 # Script de désactivation (PowerShell) +├── Projet 01 - happy_koalas_employees.csv # Données sources (RH) +└── happy_koalas_employees_with_passwords.csv # Données traitées (généré auto) \ No newline at end of file diff --git a/update_date.ps1 b/update_date.ps1 new file mode 100644 index 0000000..51aab2d --- /dev/null +++ b/update_date.ps1 @@ -0,0 +1,40 @@ +# ----------------------------------------------------------- +# Script : update_expiration_date.ps1 +# Description : Expire les comptes des "Assembler" du département "Production" +# en définissant la date d'expiration à J-1. +# ----------------------------------------------------------- + +# --- CONFIGURATION --- +$TargetDepartment = "Production" +$TargetTitle = "Assembler" + +# Calcul de la date d'expiration (Date du jour - 1 jour) +$ExpirationDate = (Get-Date).AddDays(-1) + +# --- IMPORTATION MODULE --- +Import-Module ActiveDirectory + +# --- TRAITEMENT --- +Write-Host "Recherche des utilisateurs concernés ($TargetDepartment - $TargetTitle)..." -ForegroundColor Cyan + +# Récupération des utilisateurs correspondant aux critères +# On utilise le filtre AD pour cibler uniquement les bonnes personnes +$UsersToExpire = Get-ADUser -Filter "Department -eq '$TargetDepartment' -and Title -eq '$TargetTitle'" -Properties Department, Title + +if ($UsersToExpire) { + foreach ($User in $UsersToExpire) { + try { + # Application de la date d'expiration + Set-ADAccountExpiration -Identity $User -DateTime $ExpirationDate -ErrorAction Stop + + Write-Host "Compte expiré pour : $($User.Name) ($($User.SamAccountName))" -ForegroundColor Yellow + } + catch { + Write-Host "Erreur lors de la modification de $($User.Name) : $_" -ForegroundColor Red + } + } + Write-Host "`nOpération terminée. Les comptes ont été expirés à la date du : $ExpirationDate" -ForegroundColor Green +} +else { + Write-Host "Aucun utilisateur trouvé avec les critères : Dept=$TargetDepartment et Titre=$TargetTitle" -ForegroundColor Gray +}