From 7af25b9d05819c31cc5d66aa43dc7d5d87c628bb Mon Sep 17 00:00:00 2001 From: jfontaine35 <76435797+jfontaine35@users.noreply.github.com> Date: Fri, 18 Oct 2024 14:08:29 +0200 Subject: [PATCH] Add files via upload --- Cpt-Office-365.ps1 | 308 +++++++++++++++++++++++++++++++++++++++++++++ students.csv | 3 + 2 files changed, 311 insertions(+) create mode 100644 Cpt-Office-365.ps1 create mode 100644 students.csv diff --git a/Cpt-Office-365.ps1 b/Cpt-Office-365.ps1 new file mode 100644 index 0000000..05b734b --- /dev/null +++ b/Cpt-Office-365.ps1 @@ -0,0 +1,308 @@ +#Prérequis : +Install-Module Microsoft.Graph -Scope CurrentUser +Connect-MgGraph -Scopes "User.ReadWrite.All", "Directory.ReadWrite.All" + +#Install-Module -Name ExchangeOnlineManagement +#Import-Module -Name ExchangeOnlineManagement +Install-Module -Name MSOnline +Import-Module -Name MSOnline + +######## CONNEXION ########### +Connect-ExchangeOnline -UserPrincipalName "*******@h3campus.fr" +# Domaine utilisé pour les adresses email +#$domain = "h3hitema.fr" +$domain = "h3campus.fr" + +# Paramètres pour Office 365 +$smtpServer = "smtp.office365.com" +$smtpPort = 587 +$smtpUser = "Compte_EnvoieMail@h3hitema.fr" # L'adresse email de l'expéditeur +$smtpPassword = "********" + +# Définir les codes de couleur +$red = "e[31m" +$green = "e[32m" +$reset = "`e[0m" + +# Charger les informations des étudiants à partir du fichier CSV +$csvPath = "students.csv" +$etudiants = Import-Csv -Path $csvPath + +function Normalize-String { +param ( +[string]$inputString +) + +# Remplacer les caractères accentués et non valides +$normalizedString = $inputString -replace '[éèêë]', 'e' ` +-replace '[àâä]', 'a' ` +-replace '[ôö]', 'o' ` +-replace '[ûü]', 'u' ` +-replace '[ç]', 'c' ` +-replace '[^a-zA-Z0-9]', '' # Supprime les caractères non alphanumériques + +return $normalizedString +} + +# Fonction pour vérifier si une adresse email existe déjà dans Office 365 +function Adresse-Existe { +param ( +[string]$email +) +try { +# Filtre correctement formatté avec la syntaxe de chaîne +$filter = "PrimarySmtpAddress -eq '{0}'" -f $email +$user = Get-Mailbox -RecipientTypeDetails UserMailbox -Filter $filter +if ($user) { +return $true +} else { +return $false +} +} catch { +return $false +} +} + + +# Fonction pour générer une adresse email unique +function Generer-Email { +param ( +[string]$prenom, +[string]$nom, +[string]$domain = "h3campus.fr" +) + +# Normaliser les chaînes et les convertir en minuscules +$prenomNormalise = (Normalize-String $prenom).ToLower() +$nomNormalise = (Normalize-String $nom).ToLower() +$domainLower = $domain.ToLower() + + +$index = 1 +# Générer l'email en minuscules +$email = "{0}.{1}@{2}" -f $prenomNormalise.Substring(0, $index), $nomNormalise, $domainLower + +# Boucle tant qu'une adresse existe +while (Adresse-Existe $email) { +$index++ +$email = "{0}.{1}@{2}" -f $prenomNormalise.Substring(0, $index), $nomNormalise, $domainLower +} + +return $email +} + + +function Generer-MotDePasse { +param ( +[int]$length = 12, +[int]$specialCharsCount = 2 +) + +# Vérification de la longueur +if ($length -le $specialCharsCount) { +throw "La longueur du mot de passe doit être supérieure au nombre de caractères spéciaux." +} + +# Définir les ensembles de caractères +$letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' +$numbers = '0123456789' +$specialChars = '!@#$%^&*()-+=' + +# Initialiser le mot de passe +$password = '' + +# Ajouter des lettres +for ($i = 0; $i -lt ($length - $specialCharsCount - 1); $i++) { +$index = Get-Random -Minimum 0 -Maximum $letters.Length +$password += $letters[$index] # Prendre une lettre en utilisant l'index +} + +# Ajouter un chiffre aléatoire +$index = Get-Random -Minimum 0 -Maximum $numbers.Length +$password += $numbers[$index] # Ajouter un chiffre en utilisant l'index + +# Ajouter les caractères spéciaux +for ($i = 0; $i -lt $specialCharsCount; $i++) { +$index = Get-Random -Minimum 0 -Maximum $specialChars.Length +$password += $specialChars[$index] # Prendre un caractère spécial en utilisant l'index +} + +# Mélanger les caractères +$finalPassword = -join ($password.ToCharArray() | Sort-Object { Get-Random }) + +return $finalPassword +} + + +# Fonction pour envoyer un email avec les informations de connexion +function Envoyer-Email { +param ( +[string]$destinataire, +[string]$login, +[string]$password +) + +# Contenu de l'email avec mise en forme HTML +$subject = "Compte - $domain" +$body = @" + +
+Bonjour,
+C-dessous vous trouverz vos informations de connexion pour accéder à votre compte Teams :
+| Login | +Mot de passe | +
|---|---|
| $login | +$password | +
Un changement du mot de passe vous sera demandé à la première connexion.
+Veuillez conserver ces informations en lieu sûr.
Cordialement,
Service Informatique