Bonjour et bienvenue dans cette dernière leçon du module sur PowerShell.
Dans la leçon précédente, nous avons appris à construire des rapports pour auditer quelles politiques sont assignées à quels utilisateurs, une compétence cruciale pour la gestion et la conformité. Nous avons vu la différence entre les assignations directes, par groupe et par défaut. Mais que se passe-t-il si une politique est modifiée accidentellement ou si vous devez documenter précisément son contenu à un instant T ?
L'objectif de cette leçon est de vous apprendre à sauvegarder la configuration d'une équipe ou d'une politique dans un fichier via PowerShell. Cette compétence est essentielle pour la documentation, la reprise après incident, ou même pour dupliquer une configuration sur un autre tenant. Nous allons explorer deux approches : une méthode manuelle et ciblée, et une méthode globale et automatisée.
1. Sauvegarder une Politique Spécifique Manuellement
Pour un besoin ponctuel, comme documenter une politique avant de la modifier, il n'est pas nécessaire de sortir l'artillerie lourde. PowerShell dispose de cmdlets natives pour exporter n'importe quel objet, y compris les objets de politique Teams, dans un fichier.
Les deux formats les plus courants sont :
- CliXML : Un format propre à PowerShell, qui préserve la richesse de l'objet. Il est idéal si vous prévoyez de réimporter l'objet plus tard dans PowerShell.
- JSON : Un format texte standard, lisible par un humain et interopérable avec de nombreux autres systèmes.
La ressource suivante, bien qu'étant un guide de bonnes pratiques, contient la commande exacte dont nous avons besoin.
10 Microsoft Teams Policy Best Practices | Callroute
L'article "10 Microsoft Teams Policy Best Practices" de Callroute explique brièvement comment effectuer des sauvegardes régulières. Nous allons nous concentrer sur la commande qu'il propose.
Lisez le point n°5, "Take regular backups". Il vous donnera la syntaxe de base pour exporter une politique au format CliXML.
Comme vous l'avez vu, la méthode est très directe. On récupère l'objet de la politique avec une cmdlet Get-Cs... et on le "pipe" (transmet) à Export-CliXML.
Exemple concret avec CliXML :
Pour sauvegarder une politique de réunion nommée "Politique-Réunions-Externes" :
Get-CsTeamsMeetingPolicy -Identity "Politique-Réunions-Externes" | Export-CliXML -Path "C:\Sauvegardes\Politique-Réunions-Externes.xml"
Le fichier Politique-Réunions-Externes.xml contiendra alors une représentation complète de tous les paramètres de cette politique.
Exemple concret avec JSON :
Pour faire la même chose au format JSON, la logique est similaire, mais on utilise ConvertTo-Json puis on écrit le résultat dans un fichier avec Out-File.
Get-CsTeamsMeetingPolicy -Identity "Politique-Réunions-Externes" | ConvertTo-Json -Depth 10 | Out-File -FilePath "C:\Sauvegardes\Politique-Réunions-Externes.json"
Note : Le paramètre -Depth est important avec ConvertTo-Json pour s'assurer que les objets imbriqués sont correctement convertis et non tronqués.
Cette approche manuelle est parfaite pour une politique à la fois, mais que faire pour une équipe entière ?
2. Sauvegarder la Configuration d'une Équipe
Sauvegarder une "équipe" est plus complexe car ses informations sont réparties sur plusieurs objets : les paramètres généraux, la liste des canaux, la liste des membres, etc. Il n'y a pas de cmdlet unique Backup-Team. Nous devons donc assembler ces informations nous-mêmes.
Voici une approche scriptée pour y parvenir :
- On récupère l'objet de l'équipe avec
Get-Team. - On utilise son
GroupIdpour lister ses canaux avecGet-TeamChannel. - On utilise encore le
GroupIdpour lister ses membres avecGet-TeamUser. - On assemble toutes ces informations dans un objet PowerShell personnalisé (
[PSCustomObject]). - On exporte cet objet dans un fichier, par exemple en JSON pour une bonne lisibilité.
Voici à quoi ressemble le script :
# Assurez-vous d'être connecté à Teams
# Connect-MicrosoftTeams
# Nom de l'équipe à sauvegarder
$teamDisplayName = "Projet Phoenix"
$backupPath = "C:\Sauvegardes"
# Récupération des informations
Write-Host "Récupération des informations pour l'équipe '$teamDisplayName'..."
$teamObject = Get-Team -DisplayName $teamDisplayName
if (-not $teamObject) {
Write-Error "L'équipe '$teamDisplayName' n'a pas été trouvée."
return
}
$teamChannels = Get-TeamChannel -GroupId $teamObject.GroupId
$teamMembers = Get-TeamUser -GroupId $teamObject.GroupId
# Création d'un objet consolidé pour la sauvegarde
$teamBackupObject = [PSCustomObject]@{
TeamDetails = $teamObject
Channels = $teamChannels
Members = $teamMembers
BackupDate = Get-Date
}
# Exportation de l'objet en fichier JSON
$fileName = "Backup_Team_$($teamDisplayName.Replace(' ','_'))_$((Get-Date).ToString('yyyyMMdd')).json"
$filePath = Join-Path -Path $backupPath -ChildPath $fileName
$teamBackupObject | ConvertTo-Json -Depth 10 | Out-File -FilePath $filePath
Write-Host "La sauvegarde de l'équipe a été enregistrée dans : $filePath"
Cette méthode vous donne un contrôle total sur ce que vous sauvegardez. Cependant, si votre objectif est de sauvegarder l'intégralité de votre configuration Teams, cela deviendrait vite fastidieux. Heureusement, il existe une approche plus globale.
3. L'Approche Complète : Le Script Backup-TeamsConfig
Pour un administrateur système, réinventer la roue n'est pas toujours la meilleure stratégie. La communauté PowerShell est très active et a déjà produit des outils puissants pour des tâches courantes. Pour la sauvegarde de Teams, un script se démarque : Backup-TeamsConfig.
Cet outil va bien au-delà de la simple sauvegarde de politiques : il exporte la quasi-totalité de la configuration de votre tenant.
Pour commencer, lisons la présentation de ce script sur sa page GitHub. Cela vous donnera une idée de sa puissance et de son utilité.
Lisez les sections "Introduction" et "What does it backup?". Portez une attention particulière à la liste des éléments sauvegardés pour comprendre l'étendue de cet outil. Notez qu'il sauvegarde même les fichiers audio des standards automatiques et files d'attente.
Maintenant que vous voyez ce que le script peut faire, voyons comment l'utiliser. C'est remarquablement simple.
La documentation explique clairement la commande à utiliser pour lancer une sauvegarde.
Dans la section "Usage", concentrez-vous sur la première commande sous "Create a Backup". C'est tout ce dont vous avez besoin pour lancer une sauvegarde complète.
Après avoir téléchargé le script depuis la page "Releases" du projet GitHub, la seule commande dont vous avez besoin est :
.\Backup-TeamsConfig.ps1 -Action Backup -Path C:\Sauvegardes\Teams
Le script va alors se connecter et parcourir méthodiquement tous les types de configuration.

Une fois terminé, le script crée un fichier .zip horodaté dans le dossier que vous avez spécifié. Ce fichier contient :
- Des fichiers CLIXML pour chaque élément de configuration (politiques, routes vocales, etc.).
- Des rapports HTML qui offrent une vue synthétique et lisible de ce qui a été sauvegardé.
- Les fichiers audio (
.wav,.mp3) de vos standards automatiques et files d'attente.
Cet outil n'est pas seulement un moyen de sauvegarder, mais aussi un excellent moyen de documenter votre environnement à un instant T.
Conclusion
Aujourd'hui, nous avons ajouté une compétence essentielle à votre arsenal PowerShell : la sauvegarde de la configuration Teams.
Points clés à retenir :
- Pour une sauvegarde rapide et ciblée d'une politique, utilisez
Get-Cs...Policy | Export-CliXMLou... | ConvertTo-Json. - La sauvegarde d'une équipe nécessite un script personnalisé qui assemble les informations via
Get-Team,Get-TeamChanneletGet-TeamUser. - Pour une sauvegarde complète et automatisée de votre tenant, un outil communautaire comme
Backup-TeamsConfigest la solution la plus efficace. Il capture non seulement les politiques mais aussi la configuration vocale, les applications, et bien plus, dans une archive organisée.
Ceci conclut notre module sur l'automatisation de l'administration avec PowerShell. Vous êtes maintenant armé pour gérer les utilisateurs, les équipes et les politiques de manière efficace et à grande échelle.
Prochaine étape :
Maintenant que nous maîtrisons la gestion des utilisateurs et des politiques, notre prochaine étape sera de nous plonger dans l'infrastructure sous-jacente qui garantit le bon fonctionnement de Teams. Dans la prochaine leçon, nous commencerons le module sur la gestion du réseau en apprenant à valider que la configuration réseau respecte les prérequis de Microsoft Teams (bande passante, ports, protocoles). C'est une compétence fondamentale pour assurer une expérience utilisateur de qualité.