Bonjour et bienvenue dans cette deuxième leçon du module sur PowerShell !
Dans la leçon précédente, vous avez brillamment mis en place votre environnement en installant le module PowerShell pour Microsoft Teams et en établissant une connexion sécurisée. Vous êtes maintenant prêt à passer de la configuration à l'action.
L'objectif d'aujourd'hui est de mettre en pratique cette connexion pour accomplir une des tâches les plus courantes de l'administration : gérer les licences et les politiques d'un utilisateur individuel. Maîtriser ces commandes est la première étape concrète vers l'automatisation et la gestion efficace de votre environnement Teams, un savoir-faire essentiel pour le rôle technique que vous visez.
1. Gérer les Politiques d'un Utilisateur avec PowerShell
Dans Teams, les politiques (policies) sont des ensembles de règles qui contrôlent les fonctionnalités accessibles aux utilisateurs. Si vous avez une expérience avec Cisco VoIP, vous pouvez voir cela comme l'équivalent des stratégies qui définissent les droits d'appel ou les fonctionnalités disponibles sur un poste téléphonique.
Pour un administrateur, utiliser PowerShell pour gérer ces politiques est beaucoup plus rapide et reproductible que de cliquer dans l'interface graphique, surtout lorsque vous devrez standardiser des configurations.
Étape 1 : Lister les politiques disponibles
Avant d'assigner une politique, il faut savoir lesquelles existent. Chaque type de politique (messagerie, réunion, appel) possède sa propre commande pour être listé. Le format est généralement Get-CsTeams<Type>Policy.
Par exemple, pour voir toutes les politiques de messagerie disponibles dans votre tenant, utilisez la commande suivante dans votre terminal PowerShell (assurez-vous d'être connecté avec Connect-MicrosoftTeams) :
Get-CsTeamsMessagingPolicy
Vous verrez une liste incluant la politique globale par défaut (Global) et toutes les politiques personnalisées que vous avez pu créer. Notez le champ Identity, qui est le nom que nous utiliserons pour assigner la politique.
Étape 2 : Assigner une politique à un utilisateur
L'assignation se fait avec la commande Grant-CsTeams<Type>Policy. Elle lie un utilisateur spécifique à une politique précise.
Pour cette étape, je vous propose de consulter un guide qui explique la démarche.
How to assign Microsoft Teams policies with PowerShell
L'article "How to assign Microsoft Teams policies with PowerShell" de TechTarget est une excellente ressource qui va droit au but. Il vous montrera la syntaxe exacte pour assigner une politique à un utilisateur.
Concentrez-vous sur la section qui contient l'exemple de code "Assign a single specified user". C'est la commande Grant-CsTeamsMessagingPolicy que nous allons utiliser. Repérez bien les paramètres -Identity (pour l'utilisateur) et -PolicyName (pour le nom de la politique).
Maintenant, mettons cela en pratique. Imaginons que vous ayez une politique nommée RestrictiveMessaging qui désactive l'usage des GIFs et des mèmes. Pour l'assigner à l'utilisateur [email protected], la commande serait :
Grant-CsTeamsMessagingPolicy -Identity "[email protected]" -PolicyName "RestrictiveMessaging"
Comment vérifier l'assignation ?
Pour confirmer que la politique a bien été appliquée, vous pouvez utiliser la commande Get-CsOnlineUser et filtrer sur la propriété de la politique en question :
Get-CsOnlineUser -Identity "[email protected]" | Select-Object TeamsMessagingPolicy
Cette commande retournera le nom de la politique actuellement assignée à l'utilisateur.
Conseil d'expert : Pour retirer une politique personnalisée et faire en sorte que l'utilisateur hérite à nouveau de la politique globale (Global), utilisez la valeur $null pour le nom de la politique :
Grant-CsTeamsMessagingPolicy -Identity "[email protected]" -PolicyName $null
2. Gérer les Licences d'un Utilisateur avec PowerShell
La gestion des licences est un peu différente. Les licences ne sont pas spécifiques à Teams, mais à l'ensemble de l'écosystème Microsoft 365. Par conséquent, nous devons utiliser un module PowerShell différent et plus large : le Microsoft Graph PowerShell SDK.
C'est une distinction importante :
- Le module
MicrosoftTeamsgère la configuration du service (politiques, équipes, etc.). - Le module
Microsoft.Graphgère les objets de l'annuaire (utilisateurs, groupes) et leurs attributs (licences).
Étape 1 : Installation et connexion au module Microsoft Graph
Si ce n'est pas déjà fait, vous devez d'abord installer le module. Contrairement au module Teams, il est préférable de l'installer uniquement pour l'utilisateur courant (CurrentUser) pour ne pas nécessiter systématiquement les droits administrateur pour le lancer.
-
Installation du module :
Install-Module Microsoft.Graph -Scope CurrentUser -
Connexion au service : La connexion à Graph requiert de spécifier les "scopes", c'est-à-dire les permissions dont vous avez besoin. Pour gérer les utilisateurs et leurs licences, les scopes suivants sont nécessaires.
Connect-MgGraph -Scopes "User.ReadWrite.All", "Organization.Read.All"Comme pour le module Teams, une fenêtre d'authentification s'ouvrira.
Étape 2 : Comprendre et trouver les identifiants de licence (SkuId)
Pour assigner une licence, vous ne pouvez pas utiliser son nom commercial (ex: "Microsoft 365 E5"). Vous devez utiliser son identifiant unique, appelé SkuId.
Pour lister toutes les licences disponibles dans votre abonnement et trouver leur SkuId, utilisez la commande suivante :
Get-MgSubscribedSku | Select-Object SkuPartNumber, SkuId
SkuPartNumberest un nom plus lisible de la licence.SkuIdest l'identifiant que nous utiliserons.
Par exemple, pour trouver le SkuId de la licence "Teams Phone Standard", vous pourriez utiliser :
Get-MgSubscribedSku | Where-Object SkuPartNumber -eq 'TEAMS_PHONE_STANDARD'
Étape 3 : Assigner une licence à un utilisateur
Une fois que vous avez le SkuId, l'assignation se fait avec la commande Set-MgUserLicense.
Assign Microsoft 365 Licenses to Users with MS Graph PowerShell
L'article "Assign Microsoft 365 Licenses to Users with MS Graph PowerShell" est une référence complète sur le sujet. Nous allons nous concentrer sur le cas le plus simple : l'assignation d'une licence unique à un seul utilisateur.
Lisez la section "1. Assign Microsoft 365 License using MS Graph PowerShell". Repérez la commande Set-MgUserLicense et sa syntaxe. Notez comment le SkuId est utilisé dans le paramètre -AddLicenses.
La syntaxe de base est la suivante :
# D'abord, on stocke le SkuId dans une variable
$license = @{ SkuId = "ID_DE_VOTRE_LICENCE" }
# Ensuite, on l'assigne à l'utilisateur
Set-MgUserLicense -UserId "[email protected]" -AddLicenses $license -RemoveLicenses @()
-AddLicensesprend un ou plusieurs SkuId à ajouter.-RemoveLicenses @()indique ici que nous ne souhaitons retirer aucune licence lors de cette opération.
Comment vérifier l'assignation ?
Vous pouvez bien sûr vérifier dans le centre d'administration, mais restons dans PowerShell. La commande suivante liste les SkuId des licences assignées à un utilisateur :
(Get-MgUser -UserId "[email protected]" -Property "assignedLicenses").AssignedLicenses.SkuId
Le changement est immédiat, comme le montre la comparaison ci-dessous dans le centre d'administration.

Conclusion
Félicitations ! Vous avez réalisé deux des opérations d'administration les plus fondamentales via PowerShell.
Points clés à retenir :
- Les politiques et les licences sont gérées par deux modules PowerShell distincts :
MicrosoftTeamspour la configuration du service etMicrosoft.Graphpour l'identité et les licences. - La gestion des politiques se fait avec les commandes
Get-CsTeams*PolicyetGrant-CsTeams*Policy. - La gestion des licences nécessite de connaître le
SkuIdet d'utiliser la commandeSet-MgUserLicensedu module Graph. - L'utilisation de
$nullavecGrant-CsTeams*Policyest une astuce puissante pour réinitialiser la politique d'un utilisateur à la valeur par défaut de l'organisation.
Prochaine étape :
Maintenant que vous savez gérer un utilisateur individuellement, la prochaine leçon vous fera passer à la vitesse supérieure. Nous verrons comment automatiser l'attribution en masse de politiques à des groupes d'utilisateurs. C'est là que la véritable puissance de PowerShell commence à se révéler