355 lines
9.9 KiB
Markdown
355 lines
9.9 KiB
Markdown
# 🎓 Script de Création d'Utilisateurs Office 365 pour Étudiants
|
||
|
||
Script PowerShell automatisé pour créer des comptes utilisateurs Microsoft 365, attribuer des licences multiples et envoyer les informations de connexion par email.
|
||
|
||
## 📋 Table des matières
|
||
|
||
- [Fonctionnalités](#-fonctionnalités)
|
||
- [Prérequis](#-prérequis)
|
||
- [Installation](#-installation)
|
||
- [Configuration](#️-configuration)
|
||
- [Utilisation](#-utilisation)
|
||
- [Structure du fichier CSV](#-structure-du-fichier-csv)
|
||
- [Licences attribuées](#-licences-attribuées)
|
||
- [Options avancées](#-options-avancées)
|
||
- [Sécurité](#-sécurité)
|
||
- [Dépannage](#-dépannage)
|
||
- [Contribution](#-contribution)
|
||
- [Licence](#-licence)
|
||
|
||
## ✨ Fonctionnalités
|
||
|
||
- ✅ **Création automatique de comptes utilisateurs** dans Microsoft 365
|
||
- 📧 **Génération d'adresses email uniques** avec normalisation des caractères spéciaux
|
||
- 🔐 **Génération de mots de passe sécurisés** (12 caractères minimum avec caractères spéciaux)
|
||
- 🎫 **Attribution automatique de 3 licences** (Exchange, Power Apps, Office 365 A1)
|
||
- 📨 **Envoi automatique d'emails** avec design moderne et responsive
|
||
- 🔄 **Deux modes de gestion des comptes existants** :
|
||
- Ignorer les comptes existants
|
||
- Réinitialiser le mot de passe et envoyer un nouvel email
|
||
- ⏸️ **Pause configurable** entre chaque création pour éviter les limitations API
|
||
|
||
## 🔧 Prérequis
|
||
|
||
### Modules PowerShell requis
|
||
|
||
```powershell
|
||
# Microsoft Graph
|
||
Install-Module Microsoft.Graph -Scope CurrentUser
|
||
|
||
# Exchange Online Management
|
||
Install-Module -Name ExchangeOnlineManagement
|
||
|
||
# MSOnline (Legacy)
|
||
Install-Module -Name MSOnline
|
||
```
|
||
|
||
### Permissions requises
|
||
|
||
- **Microsoft Graph** : `User.ReadWrite.All`, `Directory.ReadWrite.All`
|
||
- **Exchange Online** : Administrateur Exchange
|
||
- **Office 365** : Administrateur de licences
|
||
|
||
### Configuration SMTP
|
||
|
||
- Accès SMTP Office 365 activé
|
||
- Compte de service dédié pour l'envoi d'emails
|
||
- Mot de passe d'application si MFA est activé
|
||
|
||
## 📦 Installation
|
||
|
||
1. **Cloner le dépôt**
|
||
|
||
```bash
|
||
git clone https://git.tuxtech.fr/tuxgyver/Compte_Office/Compte_Office.git
|
||
cd Compte_Office
|
||
```
|
||
|
||
2. **Installer les modules PowerShell**
|
||
|
||
```powershell
|
||
# Exécuter en tant qu'administrateur
|
||
Install-Module Microsoft.Graph -Scope CurrentUser
|
||
Install-Module ExchangeOnlineManagement -Scope CurrentUser
|
||
Install-Module MSOnline -Scope CurrentUser
|
||
```
|
||
|
||
3. **Importer les modules**
|
||
|
||
```powershell
|
||
Import-Module Microsoft.Graph
|
||
Import-Module ExchangeOnlineManagement
|
||
Import-Module MSOnline
|
||
```
|
||
|
||
## ⚙️ Configuration
|
||
|
||
### 1. Modifier les paramètres du script
|
||
|
||
Ouvrez le fichier `Create-O365Users.ps1` et modifiez les variables suivantes :
|
||
|
||
```powershell
|
||
# Domaine de votre organisation
|
||
$domain = "votredomaine.fr"
|
||
|
||
# Paramètres SMTP
|
||
$smtpServer = "smtp.office365.com"
|
||
$smtpPort = 587
|
||
$smtpUser = "compte-envoi@votredomaine.fr"
|
||
$smtpPassword = "VotreMotDePasse"
|
||
|
||
# Comportement pour les comptes existants
|
||
$ComportementComptesExistants = "IgnorerExistants" # ou "ReinitializerMotDePasse"
|
||
|
||
# Chemin du fichier CSV
|
||
$csvPath = "students.csv"
|
||
```
|
||
|
||
### 2. Se connecter aux services Microsoft
|
||
|
||
```powershell
|
||
# Connexion à Microsoft Graph
|
||
Connect-MgGraph -Scopes "User.ReadWrite.All", "Directory.ReadWrite.All"
|
||
|
||
# Connexion à Exchange Online
|
||
Connect-ExchangeOnline -UserPrincipalName "admin@votredomaine.fr"
|
||
```
|
||
|
||
## 🚀 Utilisation
|
||
|
||
### Exécution basique
|
||
|
||
| Sous Linux, pensez à lancer d'abord powershell avec la commande: pwsh
|
||
|
||
```powershell
|
||
# Lancer le script
|
||
.\Compte_Office.ps1
|
||
```
|
||
|
||
### Workflow du script
|
||
|
||
1. **Lecture du fichier CSV** contenant les informations des étudiants
|
||
2. **Normalisation des noms** (suppression des accents et caractères spéciaux)
|
||
3. **Génération d'adresses email uniques** (format : `p.nom@domaine.fr`)
|
||
4. **Vérification de l'existence** du compte
|
||
5. **Création du compte** (si inexistant) ou **réinitialisation** (selon config)
|
||
6. **Attribution des licences** Office 365
|
||
7. **Envoi de l'email** avec les identifiants
|
||
8. **Pause de 10 secondes** avant l'utilisateur suivant
|
||
|
||
## 📊 Structure du fichier CSV
|
||
|
||
Créez un fichier `students.csv` avec la structure suivante :
|
||
|
||
```csv
|
||
Prenom,Nom,Email
|
||
Jean,Dupont,jean.dupont@exemple.fr
|
||
Marie,Martin,marie.martin@exemple.fr
|
||
François,Lefèvre,francois.lefevre@exemple.fr
|
||
```
|
||
|
||
### Format requis
|
||
|
||
| Colonne | Description | Obligatoire |
|
||
|---------|-------------|-------------|
|
||
| `Prenom` | Prénom de l'étudiant | ✅ Oui |
|
||
| `Nom` | Nom de famille | ✅ Oui |
|
||
| `Email` | Email personnel pour recevoir les identifiants | ✅ Oui |
|
||
|
||
### Exemple avec caractères spéciaux
|
||
|
||
Le script gère automatiquement les caractères accentués :
|
||
|
||
```csv
|
||
Prenom,Nom,Email
|
||
Léa,Müller,lea.muller.perso@gmail.com
|
||
José,García,jose.garcia@yahoo.fr
|
||
```
|
||
|
||
➡️ Génère : `l.muller@domaine.fr` et `j.garcia@domaine.fr`
|
||
|
||
## 🎫 Licences attribuées
|
||
|
||
Le script attribue automatiquement les licences suivantes (si disponibles) :
|
||
|
||
| Licence | SKU | Description |
|
||
|---------|-----|-------------|
|
||
| **Exchange Online** | `EXCHANGESTANDARD_STUDENT` | Boîte mail 50 Go |
|
||
| **Power Apps for Developer** | `POWERAPPS_DEV` | Environnement de développement |
|
||
| **Office 365 A1 Students** | `STANDARDWOFFPACK_STUDENT` | Suite Office en ligne |
|
||
|
||
### Vérifier les licences disponibles
|
||
|
||
```powershell
|
||
# Lister toutes les licences de votre tenant
|
||
Get-MgSubscribedSku | Select-Object SkuPartNumber, ConsumedUnits, @{N='Available';E={$_.PrepaidUnits.Enabled - $_.ConsumedUnits}}
|
||
```
|
||
|
||
## 🔧 Options avancées
|
||
|
||
### 1. Changer le comportement pour les comptes existants
|
||
|
||
```powershell
|
||
# Option 1 : Ignorer les comptes existants (défaut)
|
||
$ComportementComptesExistants = "IgnorerExistants"
|
||
|
||
# Option 2 : Réinitialiser le mot de passe et renvoyer l'email
|
||
$ComportementComptesExistants = "ReinitializerMotDePasse"
|
||
```
|
||
|
||
### 2. Personnaliser les mots de passe
|
||
|
||
Modifiez la fonction `Generer-MotDePasse` :
|
||
|
||
```powershell
|
||
function Generer-MotDePasse {
|
||
param (
|
||
[int]$length = 16, # Longueur du mot de passe (défaut: 12)
|
||
[int]$specialCharsCount = 3 # Nombre de caractères spéciaux (défaut: 2)
|
||
)
|
||
# ...
|
||
}
|
||
```
|
||
|
||
### 3. Modifier la pause entre utilisateurs
|
||
|
||
```powershell
|
||
# Changer la durée de pause (en secondes)
|
||
Start-Sleep -Seconds 5 # Au lieu de 10
|
||
```
|
||
|
||
### 4. Personnaliser le template d'email
|
||
|
||
Éditez la section HTML dans la fonction `Envoyer-Email` pour adapter :
|
||
- Les couleurs (gradient, bordures)
|
||
- Le logo de votre établissement
|
||
- Le texte d'accueil
|
||
- Les informations de contact
|
||
|
||
## 🐛 Dépannage
|
||
|
||
### Erreur : "Licence non disponible"
|
||
|
||
**Cause** : La licence n'existe pas dans votre tenant ou est épuisée
|
||
|
||
**Solution** :
|
||
```powershell
|
||
# Vérifier les licences disponibles
|
||
Get-MgSubscribedSku | Where-Object {$_.SkuPartNumber -like "*STUDENT*"}
|
||
```
|
||
|
||
### Erreur : "Échec de l'envoi de l'email"
|
||
|
||
**Causes possibles** :
|
||
- SMTP désactivé sur le compte
|
||
- Mot de passe d'application incorrect (si MFA activé)
|
||
- Pare-feu bloquant le port 587
|
||
|
||
**Solution** :
|
||
```powershell
|
||
# Tester la connexion SMTP
|
||
Test-NetConnection -ComputerName smtp.office365.com -Port 587
|
||
```
|
||
|
||
### Erreur : "Caractères invalides dans le mailNickname"
|
||
|
||
**Cause** : Caractères spéciaux non gérés
|
||
|
||
**Solution** : Le script normalise automatiquement, mais vérifiez la fonction `Normalize-String`
|
||
|
||
### Erreur : "Insufficient privileges"
|
||
|
||
**Cause** : Permissions insuffisantes
|
||
|
||
**Solution** :
|
||
```powershell
|
||
# Reconnecter avec les bonnes permissions
|
||
Connect-MgGraph -Scopes "User.ReadWrite.All", "Directory.ReadWrite.All"
|
||
```
|
||
|
||
## 📈 Logs et surveillance
|
||
|
||
### Activer les logs détaillés
|
||
|
||
Les logs sont disponibles dans le dossiers:
|
||
```powershell
|
||
.\logs\creation-$(Get-Date -Format 'yyyyMMdd-HHmmss').log
|
||
```
|
||
|
||
|
||
### Exporter un rapport CSV
|
||
|
||
```powershell
|
||
# Créer un tableau de résultats
|
||
$results = @()
|
||
|
||
foreach ($etudiant in $etudiants) {
|
||
# ... traitement ...
|
||
$results += [PSCustomObject]@{
|
||
Prenom = $prenom
|
||
Nom = $nom
|
||
Email = $result.Email
|
||
Statut = if($result.Success){"Créé"}else{"Échec"}
|
||
Date = Get-Date
|
||
}
|
||
}
|
||
|
||
# Exporter le rapport
|
||
$results | Export-Csv -Path ".\rapport-creation.csv" -NoTypeInformation -Encoding UTF8
|
||
```
|
||
|
||
## 🤝 Contribution
|
||
|
||
Les contributions sont les bienvenues ! Pour contribuer :
|
||
|
||
1. **Forkez** le projet
|
||
2. Créez une **branche** pour votre fonctionnalité (`git checkout -b feature/AmazingFeature`)
|
||
3. **Committez** vos changements (`git commit -m 'Add AmazingFeature'`)
|
||
4. **Poussez** vers la branche (`git push origin feature/AmazingFeature`)
|
||
5. Ouvrez une **Pull Request**
|
||
|
||
### Guidelines
|
||
|
||
- Respecter les conventions PowerShell
|
||
- Commenter le code pour les sections complexes
|
||
- Tester sur un environnement de test avant de soumettre
|
||
- Mettre à jour la documentation si nécessaire
|
||
|
||
## 📝 Changelog
|
||
|
||
### Version 2.0.0 (2024-12)
|
||
- ✨ Ajout de l'attribution automatique de 3 licences
|
||
- ✨ Nouveau template d'email moderne et responsive
|
||
- ✨ Option de réinitialisation de mot de passe pour comptes existants
|
||
- 🎨 Amélioration de l'affichage console avec couleurs et symboles
|
||
- 🐛 Correction de la normalisation des caractères spéciaux
|
||
|
||
### Version 1.0.0 (2024-11)
|
||
- 🎉 Version initiale
|
||
- ✅ Création de comptes utilisateurs
|
||
- ✅ Attribution de licence Exchange
|
||
- ✅ Envoi d'emails basique
|
||
|
||
## 📄 Licence
|
||
|
||
Ce projet est sous licence MIT. Voir le fichier [LICENSE](https://git.tuxtech.fr/tuxgyver/Compte_Office/src/branch/main/LICENCE.md) pour plus de détails.
|
||
|
||
## 👥 Auteurs
|
||
|
||
- **Johnny** - *Développement initial* - [https://github.com/H3-Campus/Create_cpt_Office365.git](https://github.com/H3-Campus/Create_cpt_Office365.git)
|
||
|
||
## 🙏 Remerciements
|
||
|
||
- Microsoft pour la documentation Graph API
|
||
- La communauté PowerShell
|
||
- Tous les contributeurs
|
||
|
||
## 📞 Support
|
||
|
||
- 📧 Email : serviceinformatique@h3campus.fr
|
||
- 🐛 Issues : [GitHub Issues](https://git.tuxtech.fr/tuxgyver/Compte_Office.git/issues)
|
||
- 📖 Documentation : [Wiki du projet](https://git.tuxtech.fr/tuxgyver/Compte_Office/src/branch/main/Readme.md)
|
||
|
||
---
|
||
|
||
⭐ **Si ce projet vous a été utile, n'oubliez pas de lui donner une étoile !** |