Bonjour ! Bienvenue dans cette nouvelle leçon dédiée à l'automatisation avec PowerShell.
Dans la leçon précédente, nous avons posé les bases en apprenant à gérer les politiques et les licences pour un utilisateur unique. Vous avez manipulé les commandes Grant-Cs... et découvert le module Microsoft Graph, des compétences fondamentales.
Aujourd'hui, nous allons passer à la vitesse supérieure. Gérer les utilisateurs un par un est utile, mais le véritable gain de temps et de cohérence pour un administrateur vient de l'automatisation de masse. L'objectif de cette leçon est donc d'apprendre à automatiser l'attribution de politiques à des groupes d'utilisateurs. C'est une compétence cruciale qui vous permettra de déployer et de maintenir des configurations standardisées à grande échelle, un pilier du rôle technique que vous visez.
Nous explorerons deux méthodes principales :
- L'attribution à des groupes (dynamique et basée sur l'appartenance).
- L'attribution par lots (statique, pour des assignations en une seule fois).
1. Attribution de Politiques à des Groupes (Group-Based Assignment)
C'est la méthode la plus puissante et la plus recommandée pour la gestion quotidienne. Le principe est simple : vous assignez une politique à un groupe (Groupe Microsoft 365, groupe de sécurité), et Teams se charge de l'appliquer à tous ses membres. Si un utilisateur rejoint ou quitte le groupe, sa politique est automatiquement mise à jour.
Avant de commencer, deux concepts sont essentiels à comprendre : les règles de précédence et le classement.
- Règle de précédence n°1 : Le direct prime sur le groupe. Une politique assignée directement à un utilisateur aura toujours la priorité sur une politique héritée d'un groupe.
- Règle de précédence n°2 : Le classement le plus élevé l'emporte. Si un utilisateur est membre de plusieurs groupes ayant chacun une politique du même type, il héritera de la politique du groupe dont le classement (Rank) est le plus élevé. Attention, un classement élevé correspond à un chiffre bas (le rang
1est le plus prioritaire).
Ce concept de précédence est similaire au fonctionnement des listes de contrôle d'accès (ACL) ou des tables de routage que vous avez pu rencontrer en réseau, où une règle plus spécifique ou prioritaire l'emporte sur une règle générale.
Pour explorer en détail cette mécanique et les commandes associées, je vous propose de lire la documentation officielle de Microsoft.
Affecter des stratégies à des utilisateurs et des groupes
L'article "Affecter des stratégies à des utilisateurs et des groupes" de Microsoft Learn est la source de référence sur ce sujet. Il explique parfaitement la logique de précédence et de classement, et présente les commandes PowerShell.
Lisez la première partie de l'article, jusqu'à la section "Affecter une stratégie à un lot d’utilisateurs". Concentrez-vous particulièrement sur les sous-sections "Règles de précédence", "Classement des affectations de groupe" et les exemples PowerShell avec la commande Grant-CsTeamsMeetingPolicy.
Mise en pratique
Maintenant, appliquons ces concepts. Imaginons que nous voulons assigner une politique de réunion personnalisée nommée Policy-Ventes-Reunions à un groupe de sécurité contenant tous les commerciaux.
Étape 1 : Obtenir l'ID du groupe
L'assignation de politique par groupe se base sur l'ID d'objet (ObjectId) du groupe. Vous pouvez le trouver dans le portail Azure AD ou via une commande PowerShell du module Microsoft Graph que vous connaissez déjà :
# Assurez-vous d'être connecté à Graph : Connect-MgGraph -Scopes "Group.Read.All"
Get-MgGroup -Filter "displayName eq 'Groupe Ventes'" | Select-Object Id, DisplayName
Étape 2 : Assigner la politique au groupe
Une fois que vous avez l'ID du groupe, utilisez la commande Grant-Cs... avec le paramètre -Group. Nous allons lui donner un classement de 1 pour la rendre prioritaire.
Grant-CsTeamsMeetingPolicy -Group "ID_DU_GROUPE_ICI" -PolicyName "Policy-Ventes-Reunions" -Rank 1
Étape 3 : Vérifier et gérer les assignations
Vous pouvez vérifier toutes les politiques assignées à un groupe ou lister tous les groupes ayant un certain type de politique.
# Voir toutes les politiques pour un groupe spécifique
Get-CsGroupPolicyAssignment -GroupId "ID_DU_GROUPE_ICI"
# Voir tous les groupes qui ont une politique de réunion
Get-CsGroupPolicyAssignment -PolicyType TeamsMeetingPolicy

Pour modifier une assignation (par exemple, changer le rang ou la politique), il suffit de ré-exécuter la commande Grant-Cs... avec les nouvelles valeurs. Pour supprimer une assignation de groupe, on utilise la valeur $null pour -PolicyName, comme pour un utilisateur individuel.
# Suppression de l'assignation de politique de réunion pour ce groupe
Grant-CsTeamsMeetingPolicy -Group "ID_DU_GROUPE_ICI" -PolicyName $null
2. Attribution par Lots d'Utilisateurs (Batch Assignment)
Cette seconde méthode est conçue pour des assignations en une seule fois à une grande liste d'utilisateurs (jusqu'à 5000 par lot). C'est idéal pour un déploiement initial ou pour cibler des utilisateurs qui ne sont pas regroupés logiquement dans un groupe de sécurité.
Le processus est asynchrone : vous soumettez un "travail" (job) à Microsoft, et il s'exécute en arrière-plan.
Reprenons la documentation de Microsoft pour découvrir les commandes spécifiques à cette méthode.
Affecter des stratégies à des utilisateurs et des groupes
Continuons avec le même article de Microsoft Learn, cette fois-ci en nous concentrant sur l'attribution par lots.
Lisez maintenant la section "Affecter une stratégie à un lot d’utilisateurs". Portez attention aux commandes New-CsBatchPolicyAssignmentOperation et Get-CsBatchPolicyAssignmentOperation. Notez comment la liste d'utilisateurs est fournie et comment le statut du lot est suivi.
Pour compléter cette lecture technique, voici un article qui illustre un flux de travail très pratique.
Teams Bulk Policy Assignment with PowerShell - Office 365 for IT Pros
L'article "Teams Bulk Policy Assignment with PowerShell" du blog Office 365 for IT Pros montre un exemple concret de bout en bout : comment générer une liste d'utilisateurs, la préparer, puis soumettre le travail d'assignation par lots.
Lisez les sections "Assigning Policies to Multiple Teams Users", "Find the Target Users", "Submit a Teams Bulk Policy Assignment Job" et "The Value of Teams Bulk Policy Assignment". Cela vous donnera une vision très concrète de l'application de cette méthode.
Mise en pratique
Imaginons que vous devez assigner une politique d'appel Policy-Appel-Stagiaires à une liste de 200 nouveaux stagiaires.
Étape 1 : Préparer la liste d'utilisateurs
Vous avez deux options principales :
- Fichier texte/CSV : Créez un fichier (
stagiaires.txt) contenant l'UPN (User Principal Name) de chaque utilisateur, un par ligne. - Dynamiquement avec PowerShell : Récupérez les utilisateurs sur la base d'un attribut commun (ex: leur service ou leur fonction).
# Option A : Lire depuis un fichier
$userList = Get-Content -Path "C:\temp\stagiaires.txt"
# Option B : Récupérer depuis Microsoft Graph
# (Exemple : tous les utilisateurs dont la fonction est "Intern")
$userList = (Get-MgUser -Filter "jobTitle eq 'Intern'" -Property UserPrincipalName).UserPrincipalName
Étape 2 : Soumettre le travail d'assignation par lots
On utilise la commande New-CsBatchPolicyAssignmentOperation.
New-CsBatchPolicyAssignmentOperation -PolicyType TeamsCallingPolicy -PolicyName "Policy-Appel-Stagiaires" -Identity $userList -OperationName "Assignation politique appel stagiaires Juillet 2024"
La commande vous retournera un OperationId. Conservez-le !
Étape 3 : Suivre la progression du travail
Le travail s'exécute en arrière-plan. Utilisez Get-CsBatchPolicyAssignmentOperation avec l'ID obtenu pour vérifier son statut.
# Remplacez l'ID par celui que vous avez obtenu
$operationId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
Get-CsBatchPolicyAssignmentOperation -OperationId $operationId
Vous verrez le statut global (OverallStatus) passer de NotStarted à InProgress, puis Completed.
Pour voir le détail des erreurs s'il y en a, vous pouvez explorer la propriété UserState :
Get-CsBatchPolicyAssignmentOperation -OperationId $operationId | Select-Object -ExpandProperty UserState
Synthèse : Quelle méthode choisir ?
| Caractéristique | Attribution par Groupe | Attribution par Lots |
|---|---|---|
| Principe | Dynamique (basé sur l'appartenance) | Statique (assignation unique) |
| Cas d'usage | Gérer des politiques pour des rôles (Ventes, Support, RH) | Déploiement initial, migration, assignation ponctuelle |
| Maintenance | Faible (automatique) | Nulle (c'est une opération ponctuelle) |
| Gestion des conflits | Basée sur le classement (Rank) |
L'assignation devient une politique "directe" |
| Commande clé | Grant-Cs... -Group |
New-CsBatchPolicyAssignmentOperation |
Conclusion
Félicitations ! Vous maîtrisez désormais les deux approches professionnelles pour gérer les politiques Teams à grande échelle. Vous savez non seulement comment appliquer des règles de manière cohérente à des départements entiers, mais aussi comment gérer des déploiements massifs en une seule fois.
Points clés à retenir :
- L'attribution par groupe est idéale pour une gestion dynamique et durable basée sur les rôles. Le concept de classement (Rank) est fondamental pour gérer les priorités.
- L'attribution par lots est parfaite pour des opérations de masse ponctuelles, traitées en arrière-plan par le système.
- PowerShell est l'outil indispensable pour ces deux scénarios, offrant une rapidité et une fiabilité inégalées par l'interface graphique.
Prochaine étape :
Maintenant que la gestion des utilisateurs et de leurs droits est automatisée, nous allons nous attaquer à la structure même de la collaboration. Dans la prochaine leçon, vous apprendrez à créer et configurer une nouvelle équipe, avec ses canaux et ses membres, entièrement à l'aide d'un script PowerShell.