🌐 English Version | Français
Ce projet automatise le deploiement d'une structure Active Directory internationale complete pour l'organisation ATP. Il permet de creer une hierarchie organisationnelle mondiale avec des unites d'organisation (OUs), des utilisateurs, des ordinateurs, des serveurs et des groupes repartis sur 6 continents et leurs principales villes.
Le projet couvre une selection strategique de continents et villes :
- Europe : France (5 villes), Angleterre (2), Allemagne (2), Espagne (2), Italie (4), Pays-Bas (2), Belgique (2), Suisse (2)
- Amerique du Nord : USA (5 villes), Canada (2), Mexique (2)
- Amerique du Sud : Bresil (2), Argentine (2), Chili (2), Colombie (2), Perou (2)
- Asie : Chine (2), Japon (3), Inde (3), Coree du Sud (3), Singapour (1), Malaisie (2), Thailande (2), Vietnam (3)
- Afrique : Afrique du Sud (3), Nigeria (2), Egypte (1), Maroc (2), Kenya (2), Ghana (2)
- Oceanie : Australie (2), Nouvelle-Zelande (1), Papouasie-Nouvelle-Guinee (1), Fidji (1)
Total : 6 continents, 26 pays, 67 villes
- Creation automatique de la hierarchie OU ATP → International → Continents → Pays → Villes
- 67 villes strategiquement selectionnees
- Sous-OUs standardisees : Utilisateurs, Ordinateurs, Serveurs, Groupes
- Generation automatique de ~1,700 utilisateurs avec prenoms/noms francais realistes
- Repartition intelligente basee sur la taille des villes :
- Major : 50 utilisateurs (capitales, metropoles)
- Large : 20 utilisateurs (grandes villes)
- Medium : 10 utilisateurs (villes moyennes)
- Small : 5 utilisateurs (petites villes)
- Noms d'utilisateur uniques avec gestion des doublons
- Mot de passe par defaut :
Epsi@2025.
- Ordinateurs : ~1,500 machines (3 premieres villes par pays)
- Major : 100, Large : 50, Medium : 25 ordinateurs
- Types : PC, Laptop, Workstation
- Departements : Finance, RH, IT, Marketing, Operations, Legal
- Serveurs : ~400 serveurs (2 premieres villes par pays)
- Major : 15, Large : 8 serveurs
- Roles : DC, FILE, PRINT, WEB, DB, APP, MAIL, DNS, DHCP, BACKUP
- ~670 groupes (10 groupes par ville)
- Types : Administrateurs, Utilisateurs, Finance, RH, IT, Marketing, Operations, Legal, Managers, Support
- Scopes appropries (Global, DomainLocal) selon les meilleures pratiques
deploye-ad-atp-internationnal/
├── README.md # Documentation française
├── README-EN.md # Documentation anglaise
├── Create-BaseOUStructure.ps1 # Creation structure OU de base
├── Create-UserStructure.ps1 # Creation des utilisateurs
├── Create-ComputersStructure.ps1 # Creation des ordinateurs
├── Create-ServersStructure.ps1 # Creation des serveurs
└── Create-GroupsStructure.ps1 # Creation des groupes
- OS : Windows Server 2016/2019/2022 ou Windows 10/11 avec RSAT
- PowerShell : Version 5.1 ou superieure
- Module : ActiveDirectory PowerShell Module
- Droits d'administration sur le domaine Active Directory
- Permissions de creation d'objets dans l'Active Directory
- Acces en ecriture aux OUs de destination
- Controleur de domaine accessible
- Domaine configure :
atp.local - Structure de base existante :
DC=atp,DC=local
git clone https://github.com/MyMsprEPSI/deploye-ad-atp-internationnal.git
cd deploye-ad-atp-internationnal# Verifier le module Active Directory
Get-Module -ListAvailable ActiveDirectory
# Installer si necessaire (Windows 10/11)
Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0Les scripts utilisent une configuration optimisee pour les tests :
# Configuration automatique
$Configuration = @{
Domain = "atp.local"
BaseOU = "OU=International,OU=ATP,DC=atp,DC=local"
DefaultPassword = "Epsi@2025."
UsersPerCity = @{
"Major" = 50 # Grandes metropoles
"Large" = 20 # Grandes villes
"Medium" = 10 # Villes moyennes
"Small" = 5 # Petites villes
}
}.\Create-BaseOUStructure.ps1Resultat : Creation de ~400 OUs
.\Create-UserStructure.ps1Resultat : Creation de ~1,700 utilisateurs
.\Create-ComputersStructure.ps1Resultat : Creation de ~1,500 ordinateurs
.\Create-ServersStructure.ps1Resultat : Creation de ~400 serveurs
.\Create-GroupsStructure.ps1Resultat : Creation de ~670 groupes
# Script de deploiement complet
$Scripts = @(
"Create-BaseOUStructure.ps1",
"Create-UserStructure.ps1",
"Create-ComputersStructure.ps1",
"Create-ServersStructure.ps1",
"Create-GroupsStructure.ps1"
)
foreach ($Script in $Scripts) {
Write-Information "Execution de $Script..." -InformationAction Continue
& ".\$Script"
Write-Information "$Script termine.`n" -InformationAction Continue
}| Element | Quantite | Description |
|---|---|---|
| OUs Total | ~400 | Base + Continents + Pays + Villes + Sous-OUs |
| Utilisateurs | ~1,700 | Repartis selon la taille des villes |
| Ordinateurs | ~1,500 | PC, Laptops, Workstations (3 villes/pays) |
| Serveurs | ~400 | Serveurs specialises par role (2 villes/pays) |
| Groupes | ~670 | 10 groupes par ville |
| Continents | 6 | Europe, Ameriques, Asie, Afrique, Oceanie |
| Pays | 26 | Principales puissances economiques |
| Villes | 67 | Metropoles et villes importantes |
# Compter les objets crees
$Stats = @{
OUs = (Get-ADOrganizationalUnit -Filter * -SearchBase "OU=International,OU=ATP,DC=atp,DC=local").Count
Users = (Get-ADUser -Filter * -SearchBase "OU=International,OU=ATP,DC=atp,DC=local").Count
Computers = (Get-ADComputer -Filter * -SearchBase "OU=International,OU=ATP,DC=atp,DC=local").Count
Groups = (Get-ADGroup -Filter * -SearchBase "OU=International,OU=ATP,DC=atp,DC=local").Count
}
$Stats | Format-Table -AutoSize- ✅ Suppression des caracteres speciaux dans tous les commentaires
- ✅ Remplacement de Write-Host par Write-Information
- ✅ Correction des blocs catch vides avec gestion d'erreur appropriee
- ✅ Suppression des espaces de fin de ligne
- ✅ Gestion securisee des mots de passe
- ✅ Optimisation des performances
- Les mots de passe par defaut doivent etre changes apres le deploiement
- Utiliser des comptes de service dedies pour l'execution des scripts
- Audit et logging de toutes les creations d'objets
- Mise en place de politiques de groupe appropriees
# Script de nettoyage (a utiliser avec precaution)
# Remove-ADOrganizationalUnit -Identity "OU=International,OU=ATP,DC=atp,DC=local" -Recursive -Confirm:$false- Fork le projet
- Creer une branche feature (
git checkout -b feature/nouvelle-fonctionnalite) - Commit des changements (
git commit -am 'Ajout nouvelle fonctionnalite') - Push vers la branche (
git push origin feature/nouvelle-fonctionnalite) - Creer une Pull Request
- Utiliser
Write-Informationau lieu deWrite-Host - Gestion d'erreur avec
try/catchappropriee - Commentaires sans accents pour la compatibilite
- Respect des conventions PowerShell et PSScriptAnalyzer
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de details.
- Auteur : Thibaut Maurras
- Version : 2025.06.18
- Repository : GitHub - ATP AD Deployment
- 🇫🇷 Documentation Française (ce fichier)
- 🇬🇧 English Documentation
📅 Derniere mise a jour : Decembre 2024
🔖 Version : 2025.06.18 (Version optimisee pour tests)
Write-Information "$Continent : $Count utilisateurs" -InformationAction Continue
}
## 🛠️ Ameliorations PSScriptAnalyzer
### Corrections Apportees (Version 2025.06.18)
- ✅ **Suppression des caracteres speciaux** dans tous les commentaires
- ✅ **Remplacement de Write-Host** par Write-Information avec -InformationAction Continue
- ✅ **Correction des blocs catch vides** avec gestion d'erreur appropriee
- ✅ **Suppression des espaces de fin de ligne**
- ✅ **Gestion securisee des mots de passe** avec ConvertTo-SecureString
- ✅ **Optimisation des performances** avec reduction du nombre de villes
- ✅ **Amelioration de la lisibilite** des scripts avec commentaires clairs et concis
- ✅ **Respect des conventions PowerShell** et PSScriptAnalyzer
## 🔐 Securite
### Bonnes Pratiques
- Les mots de passe par defaut doivent etre changes apres le deploiement
- Utiliser des comptes de service dedies pour l'execution des scripts
- Audit et logging de toutes les creations d'objets
- Mise en place de politiques de groupe appropriees
### Nettoyage Post-Deploiement
```powershell
# Script de nettoyage (a utiliser avec precaution)
# Remove-ADOrganizationalUnit -Identity "OU=International,OU=ATP,DC=atp,DC=local" -Recursive -Confirm:$false
Le systeme est concu pour etre facilement extensible :
- Ajouter de nouveaux continents/pays dans
WorldStructure - Relancer
Create-BaseOUStructure.ps1 - Executer les autres scripts pour peupler les nouvelles structures
- Export CSV pour systemes RH
- Integration avec Azure AD Connect
- Synchronisation avec systemes de gestion d'identite
- Fork le projet
- Creer une branche feature (
git checkout -b feature/nouvelle-fonctionnalite) - Commit des changements (
git commit -am 'Ajout nouvelle fonctionnalite') - Push vers la branche (
git push origin feature/nouvelle-fonctionnalite) - Creer une Pull Request
- Utiliser
Write-Informationau lieu deWrite-Host - Gestion d'erreur avec
try/catchappropriee - Commentaires sans accents pour la compatibilite
- Respect des conventions PowerShell et PSScriptAnalyzer
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de details.
- Equipe Microsoft Active Directory pour la documentation
- Communaute PowerShell pour les bonnes pratiques
- Contributeurs du projet pour leurs ameliorations