Comment s’authentifier en PowerShell sur Office 365 ?

I. Présentation

Office 365 dispose d'une console d'administration en ligne, accessible aux administrateurs du compte de l'entreprise, cependant pour automatiser certaines tâches, un script PowerShell sera apprécié.

La première étape d'un script PowerShell qui touche à Office 365 c'est de s'authentifier auprès des services Microsoft Online, c'est donc ce que nous allons voir dans ce tutoriel. Une fois cette étape réalisée vous pourrez effectuer ce que vous souhaitez : créer, supprimer ou ajouter des utilisateurs, modifier la politique des mots de passe, attribuer des licences à vos utilisateurs, voir quels sont les utilisateurs dont la licence Office 365 va expirer, etc... etc...

Article actualisé le 03 août 2018.

II. Le code PowerShell

A. Le module MSOnline

Nous allons devoir utiliser les commandlets du module MSOnline, qui n'est pas natif à Windows. Pour l'installer, vous devez installer dans un premier temps :

Auparavant, il fallait installer "Le pack d'administration pour Microsoft Online Services" mais celui-ci n'existe plus.

A l'aide d'une console PowerShell sur votre serveur, installez ces deux modules afin d'avoir un accès complet à l'environnement Azure AD et Office 365 depuis PowerShell :

Install-Module -Name AzureAD
Install-Module MSOnline

Dès que ces éléments sont installés, vous pouvez importer le module dans votre script :

Import-Module MSOnline

B. S'authentifier sur les services Microsoft Online

Désormais, il va falloir faire la connexion auprès des serveurs Microsoft pour pouvoir ensuite réaliser différentes actions. Pour cela, nous allons définir différentes variables :

  • $UserAdmin : Utilisateur admin pour se connecter aux services Microsoft (UserPrincipalName de l'utilisateur, normalement une adresse e-mail) - A compléter dans le code
  • $Credentials : Stocker les identifiants de connexion dans une variable, notamment le mot de passe pour l'utilisateur $UserAdmin qui sera demandé
  • Connect-MsolService : Permet d'établir une connexion avec les services en ligne à partir des credentials ($Credentials) fournit
  • $MsoExchangeURL : URL vers les services Outlook d'Office 365 - Elle pourra évoluer dans le temps
  • $Session : Créer une nouvelle session PowerShell qui s'appuie sur les paramètres définit précédemment
  • Import-PSSession : Importer les paramètres de la session Office 365 que nous avons créé

Voici le bout de code à ajouter :

## Authentification Office 365
$UserAdmin = "[email protected]"
$Credentials = Get-Credential -Credential $UserAdmin
Connect-MsolService -Credential $Credentials
$MsoExchangeURL = "https://ps.outlook.com/PowerShell-LiveID?PSVersion=5.0.10586.122"
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $MsoExchangeURL -Credential $Credentials -Authentication Basic -AllowRedirection

## Importer les paramètres de la session Office 365 Microsoft Online
Import-PSSession $Session

Lorsque vous exécuterez ce bout de code, vous devrez saisir le mot de passe de l'utilisateur $UserAdmin :

office-365-powershell-auth-1

On peut améliorer le script en stockant les credentials dans un fichier chiffré (il y a différentes manières pour cela) afin de pouvoir ouvrir une connexion sans devoir saisir le mot de passe soi-même.

C. Le module temporaire

Quand l'authentification sera réalisée et la session chargée, vous aurez une ligne de ce type :

ModuleType Version    Name                                ExportedCommands                                                        
---------- -------    ----                                ----------------                                                        
Script     1.0        tmp_s2btpvwg.540                    {Add-AvailabilityAddressSpace, Add-DistributionGroupMember, Add-Mailb...

Un module temporaire nommé "tmp_s2btpvwg.540" est chargé sur votre machine, il contient énormément de commandes, vous pouvez les lister comme ceci :

PS C:\WINDOWS\system32> Get-Command -Module tmp_s2btpvwg.540

CommandType     Name                                               Version    Source                                              
-----------     ----                                               -------    ------                                              
Function        Add-AvailabilityAddressSpace                       1.0        tmp_s2btpvwg.540                                    
Function        Add-DistributionGroupMember                        1.0        tmp_s2btpvwg.540                                    
Function        Add-MailboxFolderPermission                        1.0        tmp_s2btpvwg.540                                    
Function        Add-MailboxPermission                              1.0        tmp_s2btpvwg.540                                    
Function        Add-ManagementRoleEntry                            1.0        tmp_s2btpvwg.540                                    
Function        Add-PublicFolderClientPermission                   1.0        tmp_s2btpvwg.540                                    
Function        Add-RecipientPermission                            1.0        tmp_s2btpvwg.540                                    
Function        Add-RoleGroupMember                                1.0        tmp_s2btpvwg.540                                    
Function        Add-UnifiedGroupLinks                              1.0        tmp_s2btpvwg.540                                    
Function        Clear-ActiveSyncDevice                             1.0        tmp_s2btpvwg.540                                    
Function        Clear-MobileDevice                                 1.0        tmp_s2btpvwg.540                                    
Function        Clear-TextMessagingAccount                         1.0        tmp_s2btpvwg.540                                    
Function        Compare-TextMessagingVerificationCode              1.0        tmp_s2btpvwg.540                                    
Function        Complete-MigrationBatch                            1.0        tmp_s2btpvwg.540                                    
Function        Disable-App                                        1.0        tmp_s2btpvwg.540

etc....

Le nom du module temporaire ne sera probablement pas le même sur votre machine. Désormais, vous êtes en mesure de vous authentifier sur les services Microsoft Online, notamment pour gérer Office 365, par l'intermédiaire du bout de code fourni ci-dessus dans le tutoriel.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5558.Voir tous les posts

5 thoughts on “Comment s’authentifier en PowerShell sur Office 365 ?

  • Merci Florian pour ce tuto très intéressant !

    Question bonus : est-il possible d’utiliser ce script/cmdlets comme base à l’activation des logiciels Office 365 pour les utilisateurs finaux ?

    L’idée étant de bypasser/automatiser l’enregistrement au 1er lancement du produit.

    Répondre
    • Bonjour Yann,

      Je ne suis pas sûr que ce soit possible, car je pense que la session ouverte ne sort pas du scope du script en lui-même, ce qui ne permettrait pas à l’assistant de premier démarrage d’en profiter.

      Florian

      Répondre
  • Hello, voici ce que j’utilise de mon coté 😉 :

    Si ça peut servir :

    Set-ExecutionPolicy RemoteSigned -force -confirm:$false
    ##########################################Connexion Office365
    $User = “[email protected]
    $Pass = ConvertTo-SecureString « le mot de passe » -AsPlainText -Force
    $Credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ($User,$Pass)
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $Credentials -Authentication Basic -AllowRedirection
    Import-PSSession $Session
    Connect-MsolService -Credential $Credentials
    Import-Module MSOnline

    Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.