Les dix commandes les plus utiles d’Office 365 PowerShell

Au premier abord, il peut sembler étrange d’utiliser Windows PowerShell pour gérer Office 365. En effet, les solutions Cloud promettent simplicité et facilité d’utilisation, des adjectifs rarement associés à Windows PowerShell. Laissez-moi vous expliquer. Dans cet article, je vais vous présenter les dix cmdlets Office 365 PowerShell les plus utiles pour les administrateurs système. Après avoir lu ces instructions, vous conviendrez peut-être que PowerShell est un outil précieux, même pour les systèmes Cloud.

1. Se connecter à une instance Office 365 avec PowerShell

Commencez par installer le module Office 365 pour Windows PowerShell et connectez-vous à l’instance Office 365. Procédez comme suit :

1. Téléchargez et installez l’Assistant de connexion Microsoft Online Services pour les professionnels des technologies de l’information RTW.

2. Importez le module PowerShell Online Services pour Microsoft Azure Active Directory et Office 365 :

Install-Module -Name AzureAD
Install-Module -Name MSOnline

3. Saisissez vos identifiants administrateur Office 365 :

$Cred = Get-Credential

4. Créez une session PowerShell à distance :

$O365 = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Cred -Authentication Basic -AllowRedirection

5. Importez les commandes de session dans la session Windows PowerShell locale :

Import-PSSession $O365

6. Connectez-vous à tous les services Office 365 :

Connect-MsolService –Credential $O365

Une fois importés les modules pour Windows PowerShell, vous êtes prêt à gérer votre instance Office 365.

2. Se connecter à Exchange Online et SharePoint Online avec PowerShell

Vous pouvez également vous connecter séparément à Microsoft Exchange Online et Microsoft SharePoint Online. La connexion à Exchange Online avec PowerShell est similaire à la connexion à Office 365 :

$Cred = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Cred -Authentication Basic –AllowRedirection

La connexion à SharePoint Online est un peu différente. Pour pouvoir gérer votre entité SharePoint en ligne, vous devez d’abord télécharger et installer la fonctionnalité SharePoint Online Management Shell. Ensuite, exécutez le script PowerShell suivant :

$admin="Admin@enterprise.onmicrosoft.com"
$orgname="enterprise"
$userCred = Get-Credential -UserName $admin -Message "Type the password."
Connect-SPOService -Url https://$orgname-admin.sharepoint.com -Credential $userCred

3. Obtenir une liste des cmdlets Office 365 PowerShell disponibles

Pour obtenir une liste de toutes les commandes Office 365 PowerShell disponibles, exécutez le cmdlet Get-Command :

Get-Command -module MSOnline

Vous pouvez également obtenir la liste des cmdlets d’Azure Active Directory :

Get-Command -module AzureAD

4. Obtenir une liste de tous les utilisateurs d’Office 365 avec PowerShell

Si vous devez fournir une liste des utilisateurs et des licences d’Office 365, utilisez le cmdlet Get-MsolUser. Il retrouvera tous les utilisateurs disposant d’une licence valide dans l’entité Office 365, ainsi que les paramètres DisplayName, City, Department et ObjectID.

Get-MsolUser | Select DisplayName, City, Department, ObjectID

Pour connaître le nombre de licences du compte, vous devez exécuter le cmdlet suivant :

Get-MsolAccountSku

Pour afficher la liste des services disponibles, exécutez le script suivant :

Get-MsolAccountSku | select -ExpandProperty ServiceStatus

5. Créer un nouvel utilisateur dans Office 365 avec PowerShell

Pour créer un nouvel utilisateur, utilisez la commande New-MsolUser :

New-MsolUser -UserPrincipalName JSmith@enterprise.onmicrosoft.com -DisplayName "John Smith"  -FirstName “John” -LastName “Smith”

Le système affichera le mot de passe de l’utilisateur et les données d’état de la licence.

6. Supprimer un utilisateur de tous les sites avec PowerShell

Pour supprimer un utilisateur de tous les sites à la fois, utilisez la commande suivante :

Get-SPOSite | ForEach {Remove-SPOUser -Site $_.Url -LoginName " JSmith@enterprise.onmicrosoft.com"}

7. Modifier un mot de passe dans Office 365 avec PowerShell

Pour changer le mot de passe d’un compte, utilisez le cmdlet Set-MsolUserPassword. Vous pouvez – au choix – spécifier un nouveau mot de passe (comme dans l’exemple ci-dessous) ou omettre le paramètre –NewPassword pour que le système génère automatiquement un mot de passe aléatoire.

Set-MsolUserPassword -UserPrincipalName JSmith@netwrixqcspa.onmicrosoft.com -NewPassword P@SSw0rd!

8. Gérer les appartenances à des groupes dans Office 365 avec PowerShell

Vous pouvez également gérer les groupes Office 365 à l’aide des cmdlets PowerShell. Pour récupérer une liste de tous les groupes d’Office 365, utilisez la commande Get-MsolGroup. Pour ajouter des utilisateurs à un groupe, utilisez la commande Add-MsolGroupMember :

Add-MsolGroupMember -GroupObjectId 5b61d9e1-a13f-4a2d-b5ba-773cebc08eec -GroupMemberObjectId a56cae92-a8b9-4fd0-acfc-6773a5c1c767 -GroupMembertype user

GroupObjectId est l’identifiant hexadécimal du groupe, que vous pouvez obtenir avec la commande Get-MsolGroup. GroupMemberObejctId est l’identifiant de l’objet utilisateur, que vous pouvez trouver en exécutant cette commande :

Get-MsolUser | Select ObjectID.

Pour supprimer un utilisateur dans un groupe, utilisez le cmdlet Remove-MsoGroupMember.

9. Créer une collection de sites SharePoint avec PowerShell

Vous pouvez également créer une collection de sites SharePoint à l’aide de PowerShell :

New-SPOSite -Url "https://enterprise.sharepoint.com/sites/NewSite" -Owner "JSmith@enterprise.onmicrosoft.com" -StorageQuota "100" -Title "New Site"

10. Créer des rapports dans Office 365 avec PowerShell

PowerShell est un excellent outil qui permet de produire divers rapports. Voici quelques rapports Office 365 utiles réalisés avec PowerShell :

  • Détails sur toutes les boîtes aux lettres :
Get-mailbox | get-MailboxStatistics
  • Liste de toutes les boîtes aux lettres qui n’ont pas été consultées au cours des 30 derniers jours :
Get-Mailbox –RecipientType 'UserMailbox' | Get-MailboxStatistics | Sort-Object LastLogonTime | Where {$_.LastLogonTime –lt ([DateTime]::Now).AddDays(-30) } | Format-Table DisplayName, LastLogonTime
  • Rapport sur les expéditeurs et les destinataires générant les volumes les plus importants :
Get-MailTrafficTopReport
  • Rapport sur tous les groupes et leurs membres :
function Get-AllO365Members
{
    Try
    {   
     $O365Groups=Get-UnifiedGroup
        foreach ($O365Group in $O365Groups) 
        { 
            Write-Host "Group Membership: " $O365Group.DisplayName -ForegroundColor Green
            Get-UnifiedGroupLinks –Identity $O365Group.Identity –LinkType Members
            Write-Host
        } 
    }
    catch [System.Exception]
    {
        Write-Host -ForegroundColor Red $_.Exception.ToString()   
    } 
}
Get-AllO365Members

Remarquez que la plupart des cmdlets de reporting sont devenus obsolètes en janvier 2018 et ont été remplacés par la nouvelle API MS Graph Reporting. Pour cette raison, certains rapports ne sont désormais disponibles que dans le Centre de sécurité et de conformité d’Office 365.

Comme vous pouvez le constater, il est aussi simple et rapide de gérer Office 365 avec PowerShell qu’avec Microsoft Windows Server. N’oubliez pas d’auditer toutes les modifications que vous apportez à votre environnement Office 365 ; cela vous aidera à résoudre les problèmes et à repartir plus rapidement. Pour apprendre comment configurer les audits natifs dans votre environnement Office 365, consultez notre Guide de référence rapide sur les audits d’Exchange Online et notre Guide de référence rapide sur les audits des boîtes aux lettres d’Exchange Online. Si vous souhaitez obtenir des informations utiles sur ce qui se passe dans votre environnement Office 365, ainsi que des rapports flexibles, des alertes proactives, des recherches de type Google et bien plus encore, téléchargez un essai gratuit de Netwrix Auditor for Office 365.