Files
Compte_Office/Readme.md
2025-12-03 11:55:45 +00:00

355 lines
9.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎓 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 !**