Gestion des utilisateurs et des groupes SharePoint Online avec Office 365 PowerShell

 

**Dernière rubrique modifiée :**2016-08-09

Résumé : Utilisez Office 365 PowerShell pour gérer les utilisateurs, les groupes et les sites SharePoint Online.

Si vous êtes administrateur SharePoint Online, que vous travaillez avec de grandes listes de comptes ou de groupes d’utilisateurs, et que vous voulez trouver une méthode plus facile pour les gérer, vous pouvez utiliser Office 365 PowerShell.

Avant de commencer

Avant de commencer à utiliser Office 365 PowerShell pour gérer SharePoint Online, assurez-vous que SharePoint Online Management Shell et sa configuration requise sont installés, et que vous êtes connecté à SharePoint Online.

Installez SharePoint Online Management Shell en téléchargeant et en exécutant SharePoint Online Management Shell. Vous devez faire cette démarche une seule fois pour chaque ordinateur.

Pour ouvrir l’invite de commandes SharePoint Online Management Shell, saisissez sharepoint dans l’écran d’accueil, puis cliquez sur SharePoint Online Management Shell.

Pour vous connecter à SharePoint Online, indiquez les valeurs pour les variables $adminUPN et $orgName (en remplaçant tout le texte entre guillemets, y compris les caractères < et >), puis exécutez les commandes suivantes à l’invite de commandes SharePoint Online Management Shell :

$adminUPN="<the full email address of an Office 365 administrator account, example: jdoe@contosotoycompany.onmicrosoft.com>"
$orgName="<name of your Office 365 organization, example: contosotoycompany>"
$userCredential = Get-Credential -UserName $adminUPN -Message "Type the password."
Connect-SPOService -Url https://$orgName-admin.sharepoint.com -Credential $userCredential

Lorsque la boîte de dialogue Demande d’informations d’identification Windows PowerShell vous y invite, saisissez le mot de passe du compte administrateur Office 365.

Vous êtes maintenant prêt à commencer à exécuter les commandes SharePoint Online.

Obtenir une liste de sites, de groupes et d’utilisateurs

Avant de commencer à gérer les utilisateurs et les groupes, vous devez obtenir les listes de vos sites, groupes et utilisateurs. Vous pouvez ensuite utiliser ces informations pour travailler à partir de l’exemple figurant dans cet article.

Obtenir une liste de sites

Vous pouvez obtenir la liste des sites de votre client avec la commande suivante :

Get-SPOSite

Obtenir une liste de groupes

Vous pouvez obtenir la liste des groupes de votre client avec la commande suivante :

Get-SPOSite | ForEach-Object {Get-SPOSiteGroup -Site $_.Url} |Format-Table

Obtenir une liste d’utilisateurs

Vous pouvez obtenir la liste des utilisateurs de votre client avec la commande suivante :

Get-SPOSite | ForEach-Object {Get-SPOUser -Site $_.Url}

Ajouter un utilisateur au groupe Administrateurs de collection de sites

Vous pouvez utiliser la commande Set-SPOUser pour ajouter un utilisateur à la liste des administrateurs de collection de sites sur une collection de sites. Voici à quoi ressemble la syntaxe :

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotation marks. Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotation marks. Example: \\"contosotest\\"

$user = "<loginname>"
# This is the users login name. Value must be enclosed in double quotation marks. Example \\"opalc\\"

Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.onmicrosoft.com -IsSiteCollectionAdmin $true

Cet exemple utilise des variables pour stocker des valeurs et le script contient des notes (par exemple « # Ceci est le nom de client... ») qui vous aident à comprendre à quoi correspondent ces valeurs.

Par exemple, l’ensemble de commandes suivant ajoute Opal Castillo (nom d’utilisateur opalc) à la liste des administrateurs de collection de sites dans la collection de sites ContosoTest de la location contoso1 :

$tenant = "contoso1"
$site = "contosotest"
$user = "opalc"
Set-SPOUser -Site https://$tenant.sharepoint.com/sites/$site -LoginName $user@$tenant.onmicrosoft.com -IsSiteCollectionAdmin $true

Vous pouvez couper et coller ces commandes dans le Bloc-notes, remplacer les valeurs des variables $tenant, $site et $user par des valeurs réelles de votre environnement, puis coller le tout dans votre fenêtre SharePoint Online Management Shell.

Ajout d’un utilisateur à d’autres groupes Administrateurs de collection de sites

Dans cette tâche, nous allons utiliser la commande Add-SPOUser pour ajouter un utilisateur à un groupe SharePoint sur une collection de sites. Voici à quoi ressemble la syntaxe :

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotation marks. Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotation marks. Example: \\"contosotest\\"

$user = "<loginname>"
# This is the users login name. Value must be enclosed in double quotation marks. Example: \\"opalc\\"

$group = "<group>"
# This is the SharePoint security Group name. Value must be enclosed in double quotation marks. Example: \\"Auditors\\"

Add-SPOUser -Group $group -LoginName $user@$tenant.onmicrosoft.com -Site https://$tenant.sharepoint.com/sites/$site

Par exemple, nous allons ajouter Glen Rife (nom d’utilisateur glenr) au groupe Auditeurs de la collection de sites ContosoTest, dans la location contoso1 :

$tenant = "contoso1"
$site = "contosotest"
$user = "glenr"
$group = "Auditors"
Add-SPOUser -Group $group -LoginName $user@$tenant.onmicrosoft.com -Site https://$tenant.sharepoint.com/sites/$site

Créer un groupe de collections de sites

Cette commande Set-SPOSiteGroup permet de créer un groupe SharePoint et de l’ajouter à la collection de sites ContosoTest. Voici ce à quoi ressemble la syntaxe :

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotation marks, Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotation marks, Example: \\"contosotest\\"

$group = "<group>"
# This is the SharePoint security Group name. Value must be enclosed in double quotation marks, Example: \\"Auditors\\"

$level = "<permission level>"
# This is the level of permissions to assign to the group. Value must be enclosed in double quotation marks, Example: \\"View Only\\"

New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site

Notes

Vous devez mettre entre guillemets toutes les chaînes contenant des espaces. Les propriétés de groupe, telles que les niveaux d’autorisation, peuvent être mises à jour plus tard à l’aide de la cmdlet Set-SPOSiteGroup.

Par exemple, ajoutons le groupe Auditeurs disposant des autorisations Affichage seul à la collection de sites Contoso Test, dans la location contoso1 :

$tenant = "contoso1"
$site = "Contoso Test"
$level = "View Only"
$group = "Auditors"
New-SPOSiteGroup -Group $group -PermissionLevels $level -Site https://$tenant.sharepoint.com/sites/$site

Supprimer des utilisateurs d’un groupe

Parfois, vous devez supprimer un utilisateur d’un site ou même de tous les sites, par exemple, si l’employé change de service ou quitte l’entreprise. Vous pouvez réaliser cette action facilement dans l’interface utilisateur pour un seul employé, mais déplacer un service complet d’un site à un autre est autrement plus compliqué.

Toutefois, en utilisant les fichiers CSV et SharePoint Online Management Shell, c’est rapide et facile. Dans cette tâche, vous allez utiliser Windows PowerShell pour supprimer un utilisateur d’un groupe de sécurité de collection de sites. Vous utiliserez ensuite un fichier CSV et supprimerez de nombreux utilisateurs de différents sites.

Nous allons utiliser la commande Remove-SPOUser pour supprimer un seul utilisateur Office 365 d’un groupe de collection de sites et voir la syntaxe de la commande. Voici à quoi ressemble la syntaxe :

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotation marks, Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotation marks, Example: \\"contosotest\\"

$group = "<group>"
# This is the SharePoint security Group name. Value must be enclosed in double quotation marks, Example: \\"Auditors\\"

$user = "<loginname>"
# This is the user's login name. Value must be enclosed in double quotation marks, Example: \\"opalc\\"

Remove-SPOUser -LoginName $user@$tenant.onmicrosoft.com -Site https://$tenant.sharepoint.com/sites/$site

Par exemple, nous allons supprimer Bobby Overby du groupe d’Auditeurs de la collection de sites Contoso Test, dans la location contoso1 :

$tenant = "contoso1"
$site = "contosotest"
$user = "bobbyo"
$group = "Auditors"
Remove-SPOUser -LoginName $user@$tenant.onmicrosoft.com -Site https://$tenant.sharepoint.com/sites/$site -Group $group

Supposons que nous voulions supprimer Bobby de tous les groupes auxquels il appartient actuellement. Voici comment procéder :

$tenant = "contoso1"
$user = "bobbyo"
Get-SPOSite | ForEach-Object {Get-SPOSiteGroup -Site $_.Url} | ForEach-Object {Remove-SPOUser -LoginName $user@$tenant.onmicrosoft.com -Site &_.Url}

Attention

Nous souhaitons simplement vous montrer comment faire. Vous ne devez pas exécuter cette commande sauf si vous devez vraiment supprimer un utilisateur de chaque groupe, par exemple si l’utilisateur quitte l’entreprise.

Automatiser la gestion des grandes listes d’utilisateurs et de groupes

Pour ajouter un grand nombre de comptes à des sites SharePoint et leur attribuer des autorisations, vous pouvez utiliser le Centre d’administration Office 365, des commandes PowerShell individuelles, ou encore PowerShell avec un fichier CSV. Parmi tous ces choix, le fichier CSV est le moyen le plus rapide d’automatiser cette tâche.

Le processus de base consiste à créer un fichier CSV qui possède des en-têtes (colonnes) correspondant aux paramètres dont le script Windows PowerShell a besoin. Vous pouvez facilement créer ce type de liste dans Microsoft Excel 2013, puis l’exporter en tant que fichier CSV. Ensuite, vous utilisez un script Windows PowerShell pour parcourir les enregistrements (lignes) dans le fichier CSV, en ajoutant les utilisateurs à des groupes et les groupes à des sites.

Par exemple, créons un fichier CSV pour définir un groupe de collections de sites, des groupes et des autorisations. Puis, nous créerons un fichier CSV pour remplir les groupes avec des utilisateurs. Enfin, nous créerons puis exécuterons un script Windows PowerShell simple qui crée et remplit les groupes.

Le premier fichier CSV ajoutera des groupes à des collections de sites et aura la structure suivante :

En-tête :

Site,Group,PermissionLevels

Élément :

https://<tenant>.sharepoint.com/sites/<site>,<site collection>,<group>,<level>

Voici un exemple de fichier :

Site,Group,PermissionLevels
https://contoso1.sharepoint.com/sites/contosotest,Contoso Project Leads,Full Control
https://contoso1.sharepoint.com/sites/contosotest,Contoso Auditors,View Only
https://contoso1.sharepoint.com/sites/contosotest,Contoso Designers,Design
https://contoso1.sharepoint.com/sites/TeamSite01,XT1000 Team Leads,Full Control
https://contoso1.sharepoint.com/sites/TeamSite01,XT1000 Advisors,Edit
https://contoso1.sharepoint.com/sites/Blog01,Contoso Blog Designers,Design
https://contoso1.sharepoint.com/sites/Blog01,Contoso Blog Editors,Edit
https://contoso1.sharepoint.com/sites/Project01,Project Alpha Approvers,Full Control

Le second fichier CSV ajoutera des utilisateurs à des groupes et aura la structure suivante :

En-tête :

Group,LoginName,Site

Élément :

<group>,<login>,https://<tenant>.sharepoint.com/sites/<site>

Voici un exemple de fichier :

Group,LoginName,Site
Contoso Project Leads,bobbyo@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/contosotest
Contoso Auditors,allieb@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/contosotest
Contoso Designers,bonniek@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/contosotest
XT1000 Team Leads,dorenap@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/TeamSite01
XT1000 Advisors,garthf@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/TeamSite01
Contoso Blog Designers,janets@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/Blog01
Contoso Blog Editors,opalc@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/Blog01
Project Alpha Approvers,robinc@contoso1.onmicrosoft.com,https://contoso1.sharepoint.com/sites/Project01

Pour la prochaine étape, vous devez avoir enregistré les deux fichiers CSV sur votre lecteur. Voici les commandes qui utilisent les deux fichiers CSV pour ajouter des membres aux groupes et des autorisations :

Import-Csv C:\O365Admin\GroupsAndPermissions.csv | ForEach-Object {New-SPOSiteGroup -Group $_.Group -PermissionLevels $_.PermissionLevels -Site $_.Site}
Import-Csv C:\O365Admin\Users.csv | ForEach-Object {Add-SPOUser -Group $_.Group -LoginName $_.LoginName -Site $_.Site}

Le script importe le contenu du fichier CSV et utilise les valeurs dans les colonnes (en gras) pour remplir les paramètres des commandes New-SPOSiteGroup et Add-SPOUser. Dans notre exemple, nous réalisons l’enregistrement sur le lecteur C, mais vous pouvez choisir l’emplacement que vous voulez.

Supprimons maintenant un certain nombre de personnes de plusieurs groupes au sein de différents sites, à l’aide du même fichier CSV. Voici la commande :

Import-Csv C:\O365Admin\Users.csv | ForEach-Object {Remove-SPOUser -LoginName $_.LoginName -Site $_.Site -Group $_.Group}

Générer des rapports sur les utilisateurs

Vous pouvez obtenir un rapport simple pour quelques sites et afficher les utilisateurs de ces sites, leur niveau d’autorisation, ainsi que d’autres propriétés. Voici à quoi ressemble la syntaxe :

$tenant = "<tenant>"
# This is the Tenant Name. Value must be enclosed in double quotes, Example: \\"Contoso01\\"

$site = "<site>"
# This is the Site name. Value must be enclosed in double quotes, Example: \\"contosotest\\"

Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | select * | Format-table -Wrap -AutoSize | Out-File c\UsersReport.txt -Force -Width 360 -Append

Cela permet de collecter les données de ces trois sites et de les écrire dans un fichier texte sur votre lecteur local. Notez que le paramètre –Append ajoutera le nouveau contenu à un fichier existant.

Par exemple, nous allons exécuter un rapport sur les sites ContosoTest, TeamSite01 et Project01 pour la location contoso1 :

$tenant = "contoso1"
$site = "contosotest"

Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

$site = "TeamSite01"

Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site |Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

$site = "Project01"

Get-SPOUser -Site https://$tenant.sharepoint.com/sites/$site | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

Notez que nous n’avons dû modifier que la variable $site. La variable $tenant conserve sa valeur tout au long des trois exécutions de la commande.

Mais que faire si vous souhaitez effectuer cette action pour chaque site ? Vous pouvez le faire sans avoir à entrer tous ces sites web à l’aide de cette commande :

Get-SPOSite | ForEach-Object {Get-SPOUser -Site $_.Url} | Format-Table -Wrap -AutoSize | Out-File c:\UsersReport.txt -Force -Width 360 -Append

Ce rapport est assez simple, et vous pouvez ajouter plus de code pour créer des rapports plus spécifiques ou des rapports qui contiennent des informations plus détaillées. Cependant, il devrait déjà vous donner une idée du mode d’utilisation de SharePoint Online Management Shell pour gérer des utilisateurs dans l’environnement SharePoint Online.

Voir aussi

Gérer Office 365 avec Office 365 PowerShell
Mise en route d’Office 365 Powershell
Gérer les comptes d’utilisateurs et les licences avec Office 365 PowerShell
Utilisez Windows PowerShell pour créer des rapports dans Office 365