README du dépôt
🏢 Scripts de Gestion Active Directory
Suite complete de scripts PowerShell pour la gestion Active Directory
Ce projet contient une collection complete de scripts PowerShell professionnels pour la gestion Active Directory. Ces scripts sont conçus pour être intuitifs, secures et faciles à utiliser pour n'importe qui, même sans connaissances techniques approfondies.
Auteur
CedricPoint
📋 Table des matières
🎯 Prérequis
Système d'exploitation
- Windows Server 2012 R2 ou plus récent
- Windows 10/11 (pour les outils d'administration)
- Windows Server 2016/2019/2022 (recommandé)
Outils requis
- RSAT (Remote Server Administration Tools) - Outils d'administration de serveur distant
- PowerShell 5.1 ou plus récent
- Module Active Directory pour PowerShell
- Droits d'administration sur le domaine Active Directory
🔧 Installation des outils requis
1. Installation de RSAT (Remote Server Administration Tools)
Sur Windows 10/11 :
Méthode 1 - Via Paramètres Windows :
- Ouvrez Paramètres > Applications > Fonctionnalités optionnelles
- Cliquez sur Ajouter une fonctionnalité
- Recherchez "Outils d'administration de serveur distant"
- Sélectionnez le package et cliquez sur Installer
- Redémarrez l'ordinateur si demandé
Méthode 2 - Via PowerShell (Administrateur) :
# Installer RSAT via PowerShell
Get-WindowsCapability -Online | Where-Object Name -like "Rsat*" | Add-WindowsCapability -Online
Méthode 3 - Téléchargement manuel :
- Allez sur le site Microsoft : https://www.microsoft.com/fr-fr/download/details.aspx?id=45520
- Téléchargez la version correspondant à votre système (x64 ou x86)
- Exécutez le fichier téléchargé en tant qu'administrateur
- Suivez l'assistant d'installation
Sur Windows Server :
Méthode 1 - Via Gestionnaire de serveur :
- Ouvrez Gestionnaire de serveur
- Cliquez sur Ajouter des rôles et fonctionnalités
- Suivez l'assistant jusqu'à Fonctionnalités
- Cochez Outils d'administration de serveur distant
- Cliquez sur Installer
Méthode 2 - Via PowerShell (Administrateur) :
# Installer RSAT sur Windows Server
Install-WindowsFeature -Name RSAT-AD-PowerShell, RSAT-AD-AdminCenter, RSAT-ADDS, RSAT-ADDS-Tools
2. Vérification de PowerShell
Vérifier la version de PowerShell :
$PSVersionTable.PSVersion
Si PowerShell 5.1 n'est pas installé :
Sur Windows 10/11 :
- PowerShell 5.1 est inclus par défaut
- Pour les versions plus récentes, PowerShell 7 peut être installé depuis le Microsoft Store
Sur Windows Server :
- PowerShell 5.1 est inclus par défaut
- Pour mettre à jour :
Install-Module -Name PowerShell -Force
3. Vérification du module Active Directory
Vérifier si le module est disponible :
Get-Module -ListAvailable -Name ActiveDirectory
Si le module n'est pas trouvé :
- Vérifiez que RSAT est bien installé (voir section 1)
- Redémarrez PowerShell
- Importez le module manuellement :
Import-Module ActiveDirectory
4. Test de connectivité Active Directory
Vérifier la connectivité :
# Test de connexion au domaine
try {
Get-ADDomain
Write-Host "Connexion Active Directory réussie!" -ForegroundColor Green
} catch {
Write-Host "Erreur de connexion Active Directory: $($_.Exception.Message)" -ForegroundColor Red
}
5. Droits d'administration
Vérifier vos droits :
# Vérifier si vous êtes administrateur
$currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
$isAdmin = $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if ($isAdmin) {
Write-Host "Vous avez les droits d'administrateur" -ForegroundColor Green
} else {
Write-Host "Vous n'avez pas les droits d'administrateur" -ForegroundColor Red
}
Obtenir les droits nécessaires :
- Exécuter PowerShell en tant qu'administrateur : Clic droit sur PowerShell > "Exécuter en tant qu'administrateur"
- Être membre du groupe "Administrateurs de domaine" ou avoir des droits équivalents
- Avoir accès au contrôleur de domaine via le réseau
📦 Installation
1. Téléchargement des scripts
Option 1 - Téléchargement direct :
- Téléchargez tous les fichiers
.ps1et leREADME.md - Placez-les dans un dossier (ex:
C:\Scripts\AD-Management\)
Option 2 - Via Git :
git clone [URL_DU_REPO]
cd AD-Management
2. Vérification de l'intégrité
Vérifier les signatures (si disponibles) :
Get-AuthenticodeSignature .\AD-Management-Menu.ps1
Vérifier la politique d'exécution :
Get-ExecutionPolicy
Si nécessaire, autoriser l'exécution :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
3. Test d'installation
Lancer le test automatique :
# Test complet de l'installation
.\Test-ADScripts.ps1
Ou lancer le menu principal :
.\AD-Management-Menu.ps1
⚙️ Configuration
1. Création du dossier de logs
Les scripts créent automatiquement un fichier de log dans C:\Logs\AD_Operations.log.
Création manuelle (optionnel) :
# Créer le dossier de logs
New-Item -ItemType Directory -Path "C:\Logs" -Force
# Vérifier les permissions
$acl = Get-Acl "C:\Logs"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Users","FullControl","Allow")
$acl.SetAccessRule($rule)
Set-Acl "C:\Logs" $acl
2. Configuration des notifications
Configurer les notifications par email (optionnel) :
# Variables pour les notifications
$env:AD_NOTIFICATION_EMAIL = "[email protected]"
$env:AD_SMTP_SERVER = "smtp.votreentreprise.com"
3. Personnalisation des scripts
Modifier les paramètres par défaut :
- Ouvrez le script souhaité dans un éditeur de texte
- Modifiez les valeurs par défaut dans la section
param() - Sauvegardez le fichier
📁 Scripts disponibles
1. AD-Management-Menu.ps1 - Menu principal
Script principal qui permet d'accéder à tous les autres scripts via un menu interactif.
Fonctionnalités :
- Menu principal avec toutes les options
- Vérification automatique des prérequis
- Informations sur le domaine
- Liste des utilisateurs inactifs
- État des contrôleurs de domaine
Utilisation :
.\AD-Management-Menu.ps1
2. New-ADUser.ps1 - Création d'utilisateur
Script pour créer un nouvel utilisateur dans l'Active Directory.
Fonctionnalités :
- Interface interactive pour saisir les informations
- Validation des données saisies
- Génération automatique de mots de passe sécurisés
- Sélection d'unité d'organisation
- Vérification de l'unicité du nom d'utilisateur
Utilisation :
# Mode interactif
.\New-ADUser.ps1
# Avec paramètres
.\New-ADUser.ps1 -Interactive "Y"
3. Remove-ADUser.ps1 - Suppression d'utilisateur
Script pour supprimer un utilisateur de l'Active Directory.
Fonctionnalités :
- Vérification de l'existence de l'utilisateur
- Affichage des informations avant suppression
- Confirmation obligatoire
- Logging des actions
Utilisation :
# Mode interactif
.\Remove-ADUser.ps1 -SamAccountName "nomutilisateur"
# Avec confirmation automatique
.\Remove-ADUser.ps1 -SamAccountName "nomutilisateur" -Confirm "O"
4. Get-ADUserInfo.ps1 - Recherche d'utilisateur
Script pour rechercher et afficher les informations d'un utilisateur.
Fonctionnalités :
- Recherche par nom, nom d'utilisateur, email ou service
- Affichage détaillé des informations utilisateur
- Liste des groupes d'appartenance
- Informations sur l'état du compte
Utilisation :
# Mode interactif
.\Get-ADUserInfo.ps1
# Recherche directe
.\Get-ADUserInfo.ps1 -SearchTerm "nomutilisateur" -SearchType "Username"
5. Set-ADUserPassword.ps1 - Réinitialisation de mot de passe
Script pour réinitialiser le mot de passe d'un utilisateur.
Fonctionnalités :
- Génération automatique de mots de passe sécurisés
- Validation de la force du mot de passe
- Activation/déverrouillage automatique du compte
- Configuration du changement obligatoire à la prochaine connexion
Utilisation :
# Mode interactif
.\Set-ADUserPassword.ps1
# Avec paramètres
.\Set-ADUserPassword.ps1 -SamAccountName "nomutilisateur" -ForceChange "Y"
6. Manage-ADGroups.ps1 - Gestion des groupes
Script pour gérer les groupes Active Directory.
Fonctionnalités :
- Creation et suppression de groupes
- Ajout/retrait d'utilisateurs dans les groupes
- Liste des membres d'un groupe
- Recherche de groupes
- Gestion des permissions de groupes
Utilisation :
.\Manage-ADGroups.ps1
7. Manage-ADOrganizationalUnits.ps1 - Gestion des OU
Script pour gérer les unites d'organisation.
Fonctionnalités :
- Creation et suppression d'OU
- Deplacement d'utilisateurs entre OU
- Affichage de la structure des OU
- Recherche d'OU
- Liste des utilisateurs d'une OU
Utilisation :
.\Manage-ADOrganizationalUnits.ps1
8. AD-BulkOperations.ps1 - Operations en masse
Script pour les operations en masse (export/import).
Fonctionnalités :
- Export de tous les utilisateurs vers CSV
- Export des utilisateurs d'une OU
- Import d'utilisateurs depuis CSV
- Desactivation d'utilisateurs en masse
- Ajout d'utilisateurs a un groupe en masse
Utilisation :
.\AD-BulkOperations.ps1
9. AD-Maintenance.ps1 - Maintenance et nettoyage
Script pour la maintenance automatique de l'AD.
Fonctionnalités :
- Desactivation des comptes inactifs
- Suppression des comptes orphelins
- Nettoyage des comptes expires
- Verification des mots de passe
- Audit des permissions
- Rapports de maintenance
Utilisation :
.\AD-Maintenance.ps1
10. AD-SecurityAudit.ps1 - Audit de securite
Script pour auditer la securite de l'AD.
Fonctionnalites :
- Audit des comptes privilegies
- Audit des tentatives de connexion
- Audit des mots de passe
- Audit des comptes de service
- Audit des permissions deleguees
- Rapports de securite
Utilisation :
.\AD-SecurityAudit.ps1
11. Test-ADScripts.ps1 - Script de test
Script pour tester tous les composants et identifier les problemes.
Fonctionnalites :
- Test de connectivite Active Directory
- Test de generation de mots de passe
- Test de validation d'email
- Test des permissions
- Test du systeme de logs
- Verification de la presence des scripts
Utilisation :
# Test complet
.\Test-ADScripts.ps1
# Test specifique
.\Test-ADScripts.ps1 -TestType "Connectivity"
🚀 Utilisation
Guide de démarrage rapide
1. Première utilisation
# 1. Ouvrir PowerShell en tant qu'administrateur
# 2. Naviguer vers le dossier des scripts
cd C:\Scripts\AD-Management
# 3. Lancer le menu principal
.\AD-Management-Menu.ps1
2. Utilisation quotidienne
# Créer un nouvel utilisateur
.\New-ADUser.ps1
# Rechercher un utilisateur
.\Get-ADUserInfo.ps1
# Réinitialiser un mot de passe
.\Set-ADUserPassword.ps1
Exemples d'utilisation avancée
Création d'utilisateur en lot
# Script pour créer plusieurs utilisateurs
$users = @(
@{FirstName="Jean"; LastName="Dupont"; SamAccountName="jdupont"; Department="IT"},
@{FirstName="Marie"; LastName="Martin"; SamAccountName="mmartin"; Department="RH"}
)
foreach ($user in $users) {
# Utiliser les paramètres du script
.\New-ADUser.ps1 -FirstName $user.FirstName -LastName $user.LastName -SamAccountName $user.SamAccountName
}
Recherche et modification en lot
# Rechercher tous les utilisateurs d'un service
$users = Get-ADUser -Filter "Department -eq 'IT'" -Properties Department
foreach ($user in $users) {
Write-Host "Traitement de $($user.DisplayName)"
# Actions personnalisées
}
Intégration avec d'autres outils
Tâches planifiées
# Créer une tâche planifiée pour les rapports quotidiens
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\AD-Management\Get-ADUserInfo.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 9am
Register-ScheduledTask -TaskName "AD-Daily-Report" -Action $action -Trigger $trigger
Intégration avec des systèmes de monitoring
# Script pour vérifier l'état des utilisateurs
$inactiveUsers = Get-ADUser -Filter "LastLogonDate -lt '$((Get-Date).AddDays(-30))' -and Enabled -eq 'true'"
if ($inactiveUsers.Count -gt 0) {
# Envoyer une alerte
Send-MailMessage -To "[email protected]" -Subject "Utilisateurs inactifs détectés" -Body "Nombre d'utilisateurs inactifs: $($inactiveUsers.Count)"
}
🔒 Sécurité
Bonnes pratiques
1. Gestion des mots de passe
- ✅ Utilisez toujours des mots de passe forts (12+ caractères)
- ✅ Changez les mots de passe par défaut immédiatement
- ✅ Activez l'expiration des mots de passe
- ✅ Utilisez des caractères spéciaux, majuscules, minuscules et chiffres
2. Contrôle d'accès
- ✅ Limitez l'accès aux scripts aux administrateurs autorisés
- ✅ Utilisez des comptes dédiés pour l'administration AD
- ✅ Auditez régulièrement les accès et modifications
- ✅ Implémentez le principe du moindre privilège
3. Monitoring et audit
- ✅ Surveillez les logs d'activité quotidiennement
- ✅ Configurez des alertes pour les actions sensibles
- ✅ Sauvegardez régulièrement les logs
- ✅ Testez les procédures de récupération
Validation des données
Contrôles automatiques
- ✅ Vérification de l'unicité des noms d'utilisateur
- ✅ Validation des formats d'email
- ✅ Contrôle de la force des mots de passe
- ✅ Vérification de l'existence des utilisateurs avant suppression
Contrôles manuels
- ✅ Confirmation obligatoire pour les actions destructives
- ✅ Affichage des informations avant modification
- ✅ Possibilité d'annuler à chaque étape
Chiffrement et protection
Protection des mots de passe
# Les mots de passe sont gérés en SecureString
$securePassword = ConvertTo-SecureString "MotDePasse123!" -AsPlainText -Force
Protection des logs
# Les logs sont protégés contre la modification
$acl = Get-Acl "C:\Logs\AD_Operations.log"
$acl.SetAccessRuleProtection($true, $false)
Set-Acl "C:\Logs\AD_Operations.log" $acl
📝 Logs et audit
Fichier de logs principal
Toutes les opérations sont automatiquement enregistrées dans :
C:\Logs\AD_Operations.log
Format des logs
2024-01-15 14:30:25 - Utilisateur 'john.doe' créé par ADMINISTRATEUR
2024-01-15 14:35:10 - Mot de passe de l'utilisateur 'jane.smith' changé par ADMINISTRATEUR
2024-01-15 15:20:45 - Utilisateur 'old.user' supprimé par ADMINISTRATEUR
Rotation des logs
# Script pour la rotation automatique des logs
$logFile = "C:\Logs\AD_Operations.log"
$maxSize = 10MB
if ((Get-Item $logFile).Length -gt $maxSize) {
$backupFile = "C:\Logs\AD_Operations_$(Get-Date -Format 'yyyyMMdd_HHmmss').log"
Move-Item $logFile $backupFile
New-Item -ItemType File -Path $logFile
}
Export des logs pour analyse
# Exporter les logs du dernier mois
$lastMonth = (Get-Date).AddMonths(-1)
$logs = Get-Content "C:\Logs\AD_Operations.log" | Where-Object {
$date = [DateTime]::ParseExact($_.Split(' - ')[0], "yyyy-MM-dd HH:mm:ss", $null)
$date -gt $lastMonth
}
$logs | Export-Csv "C:\Logs\AD_Operations_$(Get-Date -Format 'yyyyMM').csv"
🐛 Dépannage
Erreurs courantes et solutions
1. Erreurs d'installation
"Le module Active Directory n'est pas installé"
# Solution : Installer RSAT
Get-WindowsCapability -Online | Where-Object Name -like "Rsat*" | Add-WindowsCapability -Online
"Accès refusé"
# Solution : Vérifier les droits
$currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
$isAdmin = $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
"Politique d'exécution restrictive"
# Solution : Autoriser l'exécution
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
2. Erreurs de connectivité
"Impossible de se connecter au domaine"
# Test de connectivité
Test-Connection -ComputerName (Get-ADDomain).PDCEmulator -Count 1
nltest /dsgetdc:$(Get-ADDomain).DNSRoot
"Erreur DNS"
# Vérifier la configuration DNS
nslookup $(Get-ADDomain).DNSRoot
ipconfig /flushdns
3. Erreurs d'utilisation
"L'utilisateur n'existe pas"
# Rechercher l'utilisateur
Get-ADUser -Filter "Name -like '*nom*'" -Properties DisplayName, SamAccountName
"Mot de passe trop faible"
- Utilisez au moins 8 caractères
- Incluez majuscules, minuscules, chiffres et caractères spéciaux
- Évitez les mots de passe courants
Diagnostic automatique
Script de diagnostic complet
# Script de diagnostic AD
Write-Host "=== DIAGNOSTIC ACTIVE DIRECTORY ===" -ForegroundColor Cyan
# 1. Vérifier PowerShell
Write-Host "1. Version PowerShell: $($PSVersionTable.PSVersion)" -ForegroundColor Green
# 2. Vérifier le module AD
try {
Import-Module ActiveDirectory
Write-Host "2. Module Active Directory: OK" -ForegroundColor Green
} catch {
Write-Host "2. Module Active Directory: ERREUR" -ForegroundColor Red
}
# 3. Vérifier la connectivité
try {
$domain = Get-ADDomain
Write-Host "3. Connexion au domaine: OK ($($domain.Name))" -ForegroundColor Green
} catch {
Write-Host "3. Connexion au domaine: ERREUR" -ForegroundColor Red
}
# 4. Vérifier les droits
$currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
$isAdmin = $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
Write-Host "4. Droits administrateur: $(if($isAdmin){'OK'}else{'ERREUR'})" -ForegroundColor $(if($isAdmin){'Green'}else{'Red'})
# 5. Vérifier les logs
$logPath = "C:\Logs\AD_Operations.log"
if (Test-Path $logPath) {
Write-Host "5. Fichier de logs: OK" -ForegroundColor Green
} else {
Write-Host "5. Fichier de logs: MANQUANT" -ForegroundColor Yellow
}
❓ FAQ
Questions générales
Q: Puis-je utiliser ces scripts sur un domaine non-Windows ? R: Non, ces scripts sont spécifiquement conçus pour Active Directory Windows.
Q: Les scripts fonctionnent-ils avec PowerShell Core ? R: Oui, mais PowerShell 5.1 est recommandé pour une compatibilité optimale.
Q: Puis-je modifier les scripts pour mes besoins ? R: Oui, les scripts sont modulaires et facilement personnalisables.
Questions de sécurité
Q: Les mots de passe sont-ils stockés en clair ? R: Non, les mots de passe sont gérés en SecureString et ne sont jamais affichés.
Q: Comment auditer les actions effectuées ?
R: Toutes les actions sont enregistrées dans C:\Logs\AD_Operations.log.
Q: Puis-je limiter l'accès aux scripts ? R: Oui, utilisez les permissions NTFS et les groupes de sécurité Windows.
Questions techniques
Q: Que faire si un script plante ? R: Vérifiez les logs, les droits d'administration et la connectivité réseau.
Q: Comment automatiser les tâches répétitives ? R: Utilisez les tâches planifiées Windows ou créez des scripts de wrapper.
Q: Puis-je intégrer ces scripts avec d'autres outils ? R: Oui, les scripts peuvent être appelés depuis d'autres applications.
📞 Support
Ressources d'aide
1. Documentation officielle
2. Communauté
3. Outils de diagnostic
# Outils de diagnostic intégrés
dcdiag /v
repadmin /showrepl
nltest /dsgetdc:$(Get-ADDomain).DNSRoot
Contact et maintenance
Signaler un problème
- Vérifiez les logs dans
C:\Logs\AD_Operations.log - Exécutez le script de diagnostic
- Documentez les étapes de reproduction
- Incluez les messages d'erreur complets
Mises à jour
- Vérifiez régulièrement les mises à jour de RSAT
- Surveillez les bulletins de sécurité Microsoft
- Testez les nouvelles versions dans un environnement de développement
📄 Licence et responsabilité
Licence
Ces scripts sont fournis "en l'état" sans garantie. Utilisez-les à vos propres risques dans votre environnement de production.
Responsabilité
- Testez toujours les scripts dans un environnement de développement
- Sauvegardez votre Active Directory avant toute modification
- Vérifiez les permissions et droits avant utilisation
- Surveillez les logs pour détecter les problèmes
🔄 Compatibilité et mises à jour
Versions supportées
- Windows Server : 2012 R2, 2016, 2019, 2022
- Windows Client : 10, 11
- PowerShell : 5.1, 6.0, 7.0+
- Active Directory : Windows Server 2012 R2+
Plan de maintenance
- Mise à jour mensuelle : Vérification de compatibilité
- Mise à jour trimestrielle : Amélioration des fonctionnalités
- Mise à jour annuelle : Révision complète de la sécurité
📊 Informations du projet
Auteur : Assistant IA
Date de création : $(Get-Date -Format "yyyy-MM-dd")
Version actuelle : 1.0
Dernière mise à jour : $(Get-Date -Format "yyyy-MM-dd")
Statut : Production Ready
Historique des versions
Version 1.0 (Date actuelle)
- ✅ Scripts de base (création, suppression, recherche, mot de passe)
- ✅ Menu principal interactif
- ✅ Système de logs complet
- ✅ Validation et sécurité
- ✅ Documentation complète
Versions futures prévues
- 🔄 Interface graphique (GUI)
- 🔄 Intégration avec Microsoft Graph API
- 🔄 Support multi-domaines
- 🔄 Rapports automatisés
- 🔄 Intégration avec des systèmes de monitoring