BPOS – Réinitialisation de mot de passe en masse et notification par mail

Un autre billet autour de BPOS…

Je travaille actuellement sur un scénario de migration vers BPOS et je me rends compte qu’il est indispensable de disposer de modèles standards de communications, des scripts génériques et autres utilitaires du genre.

Dans mon scénario, une des dernières étapes est la communication du couple login/password à l’utilisateur avec un message de bienvenue et potentiellement en pièce jointe un rappel des procédures post-migration. Or, BPOS ne propose pas de choisir le mot de passe de l’utilisateur lors d’un reset massif, il ne permet pas non plus de personnaliser le mail envoyé à l’utilisateur… Et comme trop de communication tue la communication, il a fallu trouver un moyen de faire tout ça en une seule fois.

Sur le net, vous pouvez trouver une multitude de scripts permettant de reseter plusieurs mots de passes en une seule fois, de ne pas imposer le changement de mot de passe à la première connexion… Mais ils ne sont pas toujours réellement efficaces. La pluparts se contentent de lister les utilisateurs activés sur BPOS et de changer les mots de passes uns à uns, or on ne peut pas changer le mot de passe pour la session active (et le script tentera quand même de le changer), on ne peut pas choisir les utilisateurs à qui l’on souhaite réaliser cette modification (tout le monde passe dans la boucle)…

Pour ma part, j’ai choisi d’avoir un peu plus de souplesse. le script se base sur un fichier CSV contenant le nom de l’utilisateur (afin de personnaliser le mail), son identifiant (adresse mail) ainsi que son mot de passe temporaire. Il se présente de la manière suivante :

users.csv

name,mail,passwd
"User1",user1@mail.tld,S0nPassword
"Jimmy Marchetto",jimmy@marchetto.at,B1soun0ur5

Maintenant le script (commenté) :

ChangePasswd.ps1

#Identifiants Admin BPOS
$powerUser = "login@XXX.emea.microsoftonline.com"
$powerPass = "XXX"


$password = ConvertTo-SecureString $powerPass -AsPlainText -Force
$adminCredential = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $powerUser,$password

#Import CSV et récupération des données
$importusers = import-csv C:\Users\j.marchetto\Desktop\users.csv

$importusers | ForEach {
                #Changement de pwd, ne pas forcer le changement du pwd à la première connection
                Set-MSOnlineUserPassword -Identity $_.mail -Password $_.passwd -ChangePasswordOnNextLogon:$false -Credential $adminCredential -Verbose
                
                #Envoi du mail de la par de ...
                $MFrom = "jimmy@marchetto.at"

                #Passerelle SMTP à utiliser : Si votre compte est hosté sur BPOS, ne pas la changer
                $smtpServer = "smtp.mail.emea.microsoftonline.com"

                Destinataire du mail
                $to = $_.mail

                #Sujet du mail
                $subject = "New Microsoft Online Password"

                #Message Personnalisé
                $emailbody = "Hello ",$_.name,".Your Microsoft Online password was changed. Your new password is ",$_.passwd,". Please use the Microsoft Online Sign in Client to change it.  If you do not use the Sign In Client, browse to https://home.microsoftonline.com to reset your password.Regards,The support team"
                

                #Configuration du mailer
                $mailer = new-object Net.Mail.SMTPclient($smtpserver)
                $msg = new-object Net.Mail.MailMessage($MFrom, $to, $subject, $emailbody)
               
                #On précise que le mail est au format HTML pour bien interpréter les balises
                $msg.IsBodyHTML = $true

                #Envoi du mail
                $mailer.send($msg) 
}

Vous pouvez aussi attacher une pièce jointe au mail (procédures à exécuter post-migration par exemple) en insérant le code suivant ci-dessous avant le $mailer.send($msg) :

#Bien doubler le "\" pour qu'il soit bien interprété comme un chemin
$fileattachment = "c:\\test.txt"
$attachment = new-object Net.Mail.Attachment($fileattachment)
$msg.attachments.add($attachment)

Pour lancer le script, vous devez avoir l’outil de migration de Microsoft (que vous pouvez télécharger via la console d’administration) d’installé sur votre poste (pas nécessairement le serveur). Lancez l’outil “Migration Command Shell” placez-vous là où le script se trouve et exécutez la commande :

.\ChangePasswd.ps1

Voilà qui est dit, cela simplifie grandement une des phases de migration.

Si vous avez d’autres scripts, astuces ou autre, n’hésitez pas à me les faire parvenir 🙂

Source : OverTheCloud

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *