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...

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 deux installations sont à réaliser sur la machine qui exécutera le script :

Dès que ces outils 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 = "nom-utilisateur@mon-domaine.fr"
$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

Co-Fondateur d'IT-Connect, je souhaite partager mes connaissances et expériences avec vous, et comme la veille techno' est importante je partage aussi des actus.

florian a publié 1601 articles sur IT-Connect.See all posts by florian

4 réactions sur “Comment s’authentifier en PowerShell sur Office 365 ?

  • 21/09/2016 à 10:53
    Permalink

    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
    • 22/09/2016 à 08:55
      Permalink

      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
  • 21/09/2016 à 17:36
    Permalink

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

    Si ça peut servir :

    Set-ExecutionPolicy RemoteSigned -force -confirm:$false
    ##########################################Connexion Office365
    $User = “blabladmin@mondomaine.com”
    $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 de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *