Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 16

Exportation de configuration PowerShell pour équipes et politiques.

Recommended resources

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 :

  1. On récupère l'objet de l'équipe avec Get-Team.
  2. On utilise son GroupId pour lister ses canaux avec Get-TeamChannel.
  3. On utilise encore le GroupId pour lister ses membres avec Get-TeamUser.
  4. On assemble toutes ces informations dans un objet PowerShell personnalisé ([PSCustomObject]).
  5. 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.

Backup-TeamsConfig - GitHub

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.

Backup-TeamsConfig - GitHub

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.

PowerShell Script Output: Backing Up Microsoft Teams Policies
Cette image montre la sortie de la console pendant l'exécution du script. On voit clairement le script en train de sauvegarder les différentes politiques (`TeamsAppPermissionPolicy`, `TeamsCallingPolicy`, etc.) dans des fichiers XML, exactement comme nous l'avons fait manuellement, mais de manière totalement automatisée.

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-CliXML ou ... | ConvertTo-Json.
  • La sauvegarde d'une équipe nécessite un script personnalisé qui assemble les informations via Get-Team, Get-TeamChannel et Get-TeamUser.
  • Pour une sauvegarde complète et automatisée de votre tenant, un outil communautaire comme Backup-TeamsConfig est 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é.