Comment gérer ses équipes Teams avec PowerShell ?

I. Présentation

Dans ce nouvel article, nous allons travailler sur Teams, l'outil collaboratif de Microsoft et que l'on retrouve notamment dans le package Office 365. Compte-tenu de mon attirance particulière pour PowerShell, il était temps pour moi de mêler Teams et PowerShell au sein du même article.

Nous allons voir ensemble comment gérer des équipes Teams avec PowerShell.

II. Installer le module Teams

Avant toute chose, il est indispensable d'installer le module "MicrosoftTeams" de PowerShell. L'opération s'effectue comme pour tout autre module PowerShell :

Install-Module -Name MicrosoftTeams -Force

Lorsque le module sera installé sur votre machine, la commande qui suit vous permettra de l'importer dans un script. Du classique, il suffit de spécifier le nom du module "MicrosoftTeams".

Import-Module MicrosoftTeams

Je vous invite à exécuter cette commande avant d'aller plus loin afin de vérifier que le module est bien installé.

III. Se connecter à Teams en PowerShell

Pour manipuler les équipes Teams de votre tenant Office 365, il faut commencer par se connecter à Teams grâce au cmdlet "Connect-MicrosoftTeams". En amont, nous allons récupérer les identifiants de connexion dans la variable $Credentials et définir la chaîne sécurisée correspondante au mot de passe en lecture seule grâce à la méthode MakeReadOnly de la propriété "password" de notre objet.

Pour récupérer les identifiants (connectez-vous avec votre compte Office 365) :

$Credentials = Get-Credential
$Credentials.password.MakeReadOnly()

Authentifiez-vous auprès de Teams ensuite en réutilisant notre objet de credentials :

Connect-MicrosoftTeams -Credential $Credentials

Lorsque la connexion est établie, vous n'aurez pas spécialement de message de validation, mais s'il n'y a pas d'erreur c'est que c'est bon.

IV. Créer une équipe Teams

Maintenant que nous sommes connecté à Teams, je vous propose de créer une nouvelle équipe grâce au cmdlet "New-Team". L'utilisation de ce cmdlet s'accompagne de plusieurs paramètres, mais rien n'est figé : une équipe peut-être modifiée par la suite.

Nous allons utiliser les options suivantes :

  • -DisplayName : le nom d'affichage de votre équipe, c'est-à-dire le nom qui va s'afficher dans Teams
  • -Description : la description associée à cette équipe
  • -Visibility : définir la visibilité de cette équipe, à savoir privée (private) pour approuver les demandes d'accès à cette équipe ou publique (public) pour autoriser n'importe qui de votre entreprise à rejoindre l'équipe

Pour l'exemple, je crée une équipe privée nommée "FB-PowerShell" :

New-Team -DisplayName "FB-PowerShell" -Description 'Teams x PowerShell' -Visibility Private

A l'exécution de la commande, vous devriez obtenir les informations sur votre équipe en guise de retour. A noter deux propriétés intéressantes : le GroupId et le MailNickName, mais nous en reparlerons un peu plus loin.

Avec le client lourd Teams ou en ligne, on retrouve bien notre équipe :

Pour récupérer les informations sur une équipe particulière, sur un ensemble d'équipes ou sur toutes les équipes (dans la limite des droits de l'utilisateur connecté), on peut s'appuyer sur le cmdlet Get-Team.

On peut filtrer le résultat grâce à Where-Object sans problème, notamment en se basant sur le "DisplayName" c'est-à-dire le nom de l'équipe. Ce qui donne :

Get-Team | Where {$_.DisplayName -like 'FB*'}

Cette commande retourne bien l'équipe que je viens de créer.

GroupId DisplayName Visibility Archived MailNickName Description 
------- ----------- ---------- -------- ------------ ----------- 
3acc74b4-2dec-455a-b36e-1431cb8099f8 FB-PowerShell Private False msteams_f6f9ee Teams x PowerShell

Le paramètre -DisplayName peut-être inclus directement dans la commande Get-Team. Si l'on affiche le résultat sous forme de liste ( fl / Format-List ), cela va permettre d'afficher toutes les propriétés et donc la configuration de notre nouvelle équipe Teams.

Get-Team -DisplayName "FB-PowerShell" | fl

Ce qui retourne :

GroupId : 3acc74b4-2dec-455a-b36e-1431cb8099f8
DisplayName : FB-PowerShell
Description : Teams x PowerShell
Visibility : Private
MailNickName : msteams_f6f9ee
Classification : 
Archived : False
AllowGiphy : True
GiphyContentRating : moderate
AllowStickersAndMemes : True
AllowCustomMemes : True
AllowGuestCreateUpdateChannels : False
AllowGuestDeleteChannels : False
AllowCreateUpdateChannels : True
AllowDeleteChannels : True
AllowAddRemoveApps : True
AllowCreateUpdateRemoveTabs : True
AllowCreateUpdateRemoveConnectors : True
AllowUserEditMessages : True
AllowUserDeleteMessages : True
AllowOwnerDeleteMessages : True
AllowTeamMentions : True
AllowChannelMentions : True
ShowInTeamsSearchAndSuggestions : True

On remarque qu'au travers des propriétés sous la forme "Allow*" que l'on peut activer ou désactiver certaines fonctionnalités au sein même de cette équipe. Par exemple, est-ce que l'on autorise les utilisateurs à supprimer les messages (AllowUserDeleteMessages) ou est-ce que l'on autoriser l'ajout et la suppression d'applications (AllowAddRemoveApps).

V. Modifier une équipe Teams

Pour modifier une équipe, notamment pour activer ou désactiver les options que l'on vient de voir précédemment, on va utiliser le cmdlet Set-Team.

Note : le cmdlet Set-Team regroupe et remplace certains cmdlets des versions précédentes du module, notamment : Set-TeamFunSettings, Set-TeamGuestSettings, Set-TeamMemberSettings et Set-TeamMessagingSettings. Par contre, le cmdlet Set-TeamPicture pour définir l'image de l'équipe reste valide.

Pour cibler une équipe en particulier et la modifier, il faut réaliser la requête sur l'identifiant unique de l'équipe à savoir le GroupId. Pour le récupérer dans une variable, c'est très simple. Voici l'exemple pour récupérer le GroupId de l'équipe "FB-PowerShell" :

$TeamGroupId = (Get-Team -DisplayName "FB-PowerShell").GroupId

Maintenant que notre variable $TeamGroupId contient l'ID de l'équipe, à savoir "3acc74b4-2dec-455a-b36e-1431cb8099f8" dans mon cas, on peut la modifier sans difficulté.

Lorsque l'on crée une équipe Team, par défaut l'adresse e-mail associée au groupe est  aléatoire si l'on ne spécifie pas de valeur spécifique.

Par exemple, lorsque j'ai créé mon équipe "FB-PowerShell", cela a créé automatiquement l'adresse e-mail "msteams_f6f9ee@it-connect.fr" pour le groupe Office 365. Cela n'est pas très sexy et pas idéal pour communiquer dessus...

A la création, nous aurions dû utiliser le paramètre "MailNickName" pour préciser directement une adresse e-mail à utiliser (en tant que PrimarySmtpAddress). Puisque nous ne l'avons pas fait, on va le modifier dès à présent grâce au cmdlet Set-Team, ce qui donne :

Set-Team -GroupId $TeamGroupId -MailNickname "fb-powershell"

La modification apparaît ensuite en ligne :

Par ailleurs, on remarque que les différentes propriétés de l'équipe sont modifiables via ce cmdlet ; il suffit d'utiliser le(s) bon(s) paramètre(s).

 

VI. Lister, créer et supprimer un canal dans Teams

L'équipe étant créée et configurée, nous allons pouvoir l'organiser en créant un ou plusieurs canaux. Par défaut, le canal "Général" est directement ajouté. Pour récupérer les canaux de notre équipe, on va s'appuyer encore sur le GroupId de l'équipe et on va l'utiliser dans le cmdlet Get-TeamChannel.

On peut vérifier assez facilement, que, pour le moment nous avons seulement le canal "Général".

$TeamGroupId = (Get-Team -DisplayName "FB-PowerShell").GroupId
Get-TeamChannel -GroupId $TeamGroupId

On va créer un canal nommé "PowerShell Fans", ça me semble plutôt cool comme nom 😃

Le cmdlet qui sert à créer un canal est "New-TeamChannel", et nous allons utiliser plusieurs paramètres :

  • -GroupId : équipe ciblée
  • -DisplayName : nom du canal, tel qu'il s'affichera dans Teams
  • -Description : décrire, éventuellement, le canal

Il n'y a pas d'autres options proposées pour le moment. Ce qui donne la commande suivante :

New-TeamChannel -GroupId $TeamGroupId -DisplayName "PowerShell Fans" -Description "PowerShell <3"

Je le retrouve bien dans Teams au sein de l'équipe "FB-PowerShell" :

Il est à noter que le canal "Général", créé par défaut dans chaque équipe, ne peut pas être supprimé. Par contre, vous pouvez supprimer un autre canal sans problème. Si l'on veut supprimer celui que l'on vient de créer, cela donne :

Remove-TeamChannel -GroupId $TeamGroupId -DisplayName "PowerShell Fans"

 

VII. Ajouter et retirer des membres à une équipe Teams

Le principe de Teams c'est de travailler en équipe donc créer une équipe et être seul dedans, il n'y a pas grand intérêt.

Le module PowerShell pour Teams dispose des commandes nécessaires pour ajouter et retirer des membres d'une équipe Teams. Il s'agit de la commande Add-TeamUser pour l'ajout d'un membre, et Remove-TeamUser pour la suppression d'un membre. Là encore, nous allons utiliser le GroupId de l'équipe dans notre requête.

Pour ajouter "mon-user@it-connect.fr" à notre équipe, on va utiliser :

Add-TeamUser -GroupId $TeamGroupId -User "mon-user@it-connect.fr"

A l'inverse pour le retirer, on va utiliser la même syntaxe en changeant simplement le cmdlet :

Remove-TeamUser -GroupId $TeamGroupId -User "mon-user@it-connect.fr"

Lorsqu'un utilisateur est ajouté à une équipe, si vous spécifiez le paramètre "-Role", vous pouvez indiquer s'il s'agit d'un simple membre (Member) ou s'il est propriétaire de l'équipe (Owner).

Enfin, le cmdlet "Get-TeamUser" peut-être utilisé pour lister les membres d'une équipe.

Get-TeamUser -GroupId $TeamGroupId

 

VIII. Se déconnecter de Teams en PowerShell

Pour finir, nous allons faire les choses bien : les manipulations étant terminées, on va se déconnecter proprement de Teams. Pour cela, Microsoft a tout prévu : le cmdlet Disconnect-MicrosoftTeams est là pour ça. Pour l'utiliser, il n'y a aucun paramètre à utiliser, seulement exécuter la commande :

Disconnect-MicrosoftTeams

Cet article touche à sa fin, j'espère qu'il vous sera utile quand viendra l'heure pour vous de manipuler Teams dans un script. N'hésitez pas si vous avez des questions.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian B.

Consultant chez Délibérata le jour, blogueur pour IT-Connect la nuit, je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

florian has 2572 posts and counting.See all posts by florian

15 pensées sur “Comment gérer ses équipes Teams avec PowerShell ?

  • Bonjour Florian,
    J’apprécie l’aide que vous apportez aux utilisateurs powershell.
    J’utilise team éducation depuis peu et je cherche désespérément une commande powershell permettant l’interdiction à tous les membre(élèves) de mon organisation de supprimer les canaux crées par les enseignants.
    Cela est effectivement possible manuellement pour chaque canal crée mais très fastidieux. J’ai testé la commande suivante : Set-TeamMemberSettings -GroupId iddegroupe -AllowDeleteChannels false
    Celle-ci n’est pas valide. commande non reconnue.
    Avez-vous une solution?

    Répondre
    • Bonjour Rémi,

      Les autres commandes fonctionnent-elles ? Sinon s’assurer que le module est bien présent et chargé sur le PC.
      Que retourne la commande suivante : Get-Command -Module MicrosoftTeams ?

      Cordialement,
      Florian

      Répondre
  • Comment ajouter une liste a là fois des membres

    Répondre
      • On une liste d’adresses email de plusieurs membres on veut les ajouter à la fois dans un groupe au lieu d’ajouter un par un
        Merci

        Répondre
        • Tu peux faire une boucle Foreach pour ajouter chaque adresse e-mail dans une équipe (Add-TeamUser).
          Quelque chose comme ça :

          $Emails = @("mail1@domain.fr","mail2@domain.fr")
          Foreach($Email in $Emails){
          Add-TeamUser -GroupId -User $Email
          }

          Cordialement,
          Florian

          Répondre
  • bonjour j’aimerais savoir comment creer une equpie de type Classe avec une commande powershell?

    Répondre
    • Bonjour,

      Il faut utiliser le cmdlet New-Team avec le paramètre -Template qui peut avoir deux valeurs : « EDU_Class » ou « EDU_PLC ».

      Cordialement,
      Florian

      Répondre
  • Bonjour Florian,

    Je peux voir un exemple de Code s’il vous plait par exemple comme ceci cmdlet New-Team- Template.

    Cordialement,
    Alou

    Répondre
  • Bonjour Florian,

    Ton tutoriel sur Teams est très claire sur la gestion d’un teams.

    Je souhaiterai réussir à récupérer les heures de connexion et de déconnexion quotidiennes de chacune des personnes présentent sur un meeting.

    Je n’arrive pas à trouver les variables qui permettent de remonter ces informations.

    Aurais tu une idée ?

    Répondre
  • Bonjour,

    j’ai cree en powershell une equipe et importé des utilisateurs en masse à partir d’un
    fichier CSV (tout est ok)
    Je recois bien la notification dans TEAMS
    J’aimerai savoir s’il est possible d’envoyer un email dans une boite exterieur à TEAMS apres chaque ajout dun membre en powershell
    Merci de votre reponse

    Répondre
    • Bonjour,
      Si vous voulez gérer ça directement dans le script, c’est simple : il faut inclure la commande Send-MailMessage dans votre script pour envoyer un e-mail via PowerShell.
      Cordialement,
      Florian

      Répondre
  • Bonjour Florian,
    Merci pour tous ces tutos.
    Je ne sais pas si c’est possible mais je dois migrer les données de plusieurs tenant vers un seul pour facilité l’administration. Du coup je dois migrer les conversations Teams vers le nouveau tenant. Je n’ai pas trouver comment faire. Aurais tu une idée pour que ce soit transparent pour les utilisateurs, qu’ils ne remarquent pas de différence et retrouvent leur Teams exactement identiques. Merci de ton aide

    Répondre
    • Bonjour Mike,
      Pour cette migration j’imagine que tu vas utiliser un outil payant ? Je te conseille de regarder du côté d’AvePoint et éventuellement BitTitan, ça te permettra de voir ce que les outils payants sont capables de migrer concernant Teams (ça a pas mal évolué dernièrement).
      Bon courage
      Florian

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

 

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.