Office 365 PowerShell, les bases
Windows PowerShell est une suite logicielle développée par Microsoft qui intègre une interface en ligne de commande, un langage de script ainsi qu’un kit de développement. Il est inclus dans Windows 7, Windows 8.1 et Windows 10 (y compris les versions grand public) et s’appuie sur le framework Microsoft .Net
Avec Office 365 PowerShell, vous pouvez gérer Office 365 avec des commandes et des scripts pour simplifier votre travail quotidien. Mais avant de commencer, vous devez savoir qu’Office 365 PowerShell est constitué d’un ensemble de modules correspondants aux services Office 365 que vous souhaitez manipuler (Azure AD, SharePoint Online, et Teams). Concernant Exchange Online, je ne l’aborde pas ici, car cela demande des connaissances en Exchange qui ne sont pas à la portée de tous.
Editeur de scripts Windows PowerShell ISE
Windows PowerShell Integrated Scripting Environment (ISE) est une application hôte pour Windows PowerShell. Dans ISE, vous pouvez exécuter des commandes et écrire, tester et déboguer des scripts dans une seule interface utilisateur graphique.
Il est recommandé d’exécuter l’ISE en tant qu’administrateur
Je vous renvoie à la documentation officielle, pour la prise en main de l’ISE
https://docs.microsoft.com/fr-fr/powershell/scripting/components/ise/exploring-the-windows-powershell-ise?view=powershell-7
Version PowerShell
La version actuelle de PowerShell est la 5.1 installée par défaut sur Windows 10 et Windows Server 2016. Si vous êtes sur une version Windows ou Windows Server antérieure, il est possible de mettre à jour vers la version 5.1 en suivant ce lien : https://www.microsoft.com/en-us/download/details.aspx?id=54616
Pour vérifier, la version que vous avez, il suffit d’exécuter le script suivant :
GET-Host
Maintenant vous savez si vous devez mettre à jour PowerShell
Les galeries de commandes
Les modules nécessaires à l’exécution des commandes pour Office 365 sont disponibles en ligne sous forme de packages. Il existe deux galeries principales (Repository)
- Le Repository PowerShell Gallery : https://www.powershellgallery.com/packages
- Le Repository PowerShell Gallery de Test : https://www.poshtestgallery.com/packages
Dans la majorité des cas, la galerie officielle est suffisante, mais dans d’autres cas il faut utiliser celle de test, en effet certaines commandes ne sont pas disponibles dans le Repository officiel.
Pour connaître les galeries référencées sur votre poste, vous pouvez le vérifier via la commande
Get-PSRepository
Pour enregistrer la galerie de test sur votre poste, vous pouvez exécuter la commande suivante
Register-PackageSource -Name PoshTestGallery -Location https://www.poshtestgallery.com/api/v2/ -ProviderName PowerShellGet
Pour retirer la galerie de test
Unregister-PSRepository -Name "PoshTestGallery"
Il est préférable de rendre vos galeries « Trusted », ainsi lors de l’import des modules, vous n’aurez pas à confirmer qu’elles sont de confiance.
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted Set-PSRepository -Name "PoshTestGallery" -InstallationPolicy Trusted
Get-PSRepository
Installation des modules pour Office 365
Pour connaître les modules déjà présents
Get-InstalledModule
Azure ActiveDirectory (MSOnline)
Ce module vous permet d’effectuer des tâches sur les utilisateurs, les permissions, les groupes de permissions, etc.
La version actuelle disponible est la 2.0 dans la galerie « PSGallery »
Pour installer le module – Azure AD à la dernière version
Install-Module -Name AzureADPreview -Repository PSGallery
Pour retirer le module Azure AD
Uninstall-Module -Name AzureADPreview
Microsoft Teams
Ce module vous permet d’effectuer des tâches sur les environnements de Teams.
La version actuelle disponible est la 1.0.5 dans la galerie « PSGallery »
La version actuelle disponible est la 1.0.21 dans la galerie « PoshTestGallery »
Pour installer le module MicrosoftTeams à la dernière version officielle
Install-Module -Name MicrosoftTeams -Repository PSGallery
Pour installer le module MicrosoftTeams à la dernière version de test
Install-Module -Name MicrosoftTeams -Repository PoshTestGallery
Pour retirer le module MicrosoftTeams
Uninstall-Module -Name MicrosoftTeams
SharePoint Online
Pour SharePoint Online il existe plusieurs libraires de commandes
PnP PowerShell (SharePoint Patterns and Practices) fournit une bibliothèque de commandes qui vous permet d’effectuer des actions de gestion complexes d’approvisionnement vers SharePoint Online et SharePoint Local
La version actuelle disponible est la 3.19 dans la galerie « PSGallery »
Il n’existe pas de libraire dans la galerie « PoshTestGallery »
Pour l’installer
Install-Module -Name SharePointPnPPowerShellOnline -Repository PSGallery
Pour le retirer
Uninstall-Module -Name SharePointPnPPowerShellOnline
Pour le mettre à jour
Update-Module SharePointPnPPowerShell*
SharePoint Online Management Shell est un module Windows PowerShell que vous pouvez utiliser pour gérer les paramètres SharePoint Online uniquement
Pour l’installer
Install-Module -Name Microsoft.Online.SharePoint.PowerShell -Repository PSGallery
Pour vérifier si ce module est déjà présent
Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ListAvailable | Select Name,Version
Authentification
Mais avant de pouvoir exécuter un script, il faut ouvrir une session utilisateur. Je vous propose ici une façon d’introduire votre identifiant de manière manuelle mais assez sécurisée pour vos scripts « manuels »
$AdminLogin = "admin@contoso.com" $AdminPassword = Read-Host -Prompt "Enter your Office 365 Password" -AsSecureString $credential = new-object System.Management.Automation.PSCredential $AdminLogin, $AdminPassword
Ce script va vous demander d’introduire le mot de passe pour le compte « admin@consoto.com », compte qui doit posséder des droits suffisants pour exécuter toutes vos commandes PowerShell. Sur base de l’identifiant et du mot de passe que vous allez introduire, il va stocker tout cela dans un objet de type PSCredential qui sera utilisé pour ouvrir une session sur votre tenant Office 365. Merci donc d’adapter le paramètres $AdminLogin à votre contexte Office 365
Tests des modules Office 365
Azure ActiveDirectory (MSOnline)
#Authentification $AdminLogin = "admin@contoso.com" $AdminPassword = Read-Host -Prompt "Enter your Office 365 Password" -AsSecureString $credential = new-object System.Management.Automation.PSCredential $AdminLogin, $AdminPassword #Ouverture d'une session sur Azure AD Preview Connect-MsolService -Credential $credential #Obtention de la liste de vos utilisateurs Office 365 Get-MsolUser
Microsoft Teams
#Authentification $AdminLogin = "admin@contoso.com" $AdminPassword = Read-Host -Prompt "Enter your Office 365 Password" -AsSecureString $credential = new-object System.Management.Automation.PSCredential $AdminLogin, $AdminPassword #Ouverture d'une session sur Teams Connect-MicrosoftTeams -Credential $credential #Obtention d'une liste de vos équipes Teams Get-Team
SharePoint Online
#Authentification $AdminLogin = "admin@contoso.com" $AdminPassword = Read-Host -Prompt "Enter your Office 365 Password" -AsSecureString $credential = new-object System.Management.Automation.PSCredential $AdminLogin, $AdminPassword #Ouverture d'une session sur SharePoint Online Connect-PnPOnline -url "https://contoso.sharepoint.com" -Credentials $credential #Obtention des propriétés de votre tenant Office 365 Get-PnPTeant
Vous voilà armés pour effectuer vos premiers scripts pour Office 365, SharePoint et Teams