GihanBlog

Add bulk users to MS Teams?

☕️ 4 min read
logo

Introduction

In this pandemic time period (I am writing this in 2020), social distancing is a vital thing in our day today life. But we are so used to collabarate with others and work as a team. All the companies, schools, universities are closed for months. But the life should go on.

With the current advancement of technology, online collaboration tools such as MS Teams and Zoom came to rescue us ❤.

In all these online collaboration tools, MS teams is the best one based on my opinion. There are several reasons and the most important one being able to create small sub teams and manage them seperately. Adding assignments, marking them and seamless integration with other platforms is magical.

Problem

Even though I love MS Teams, one thing that always bothered me is the fact that it does not provide a way to add users to the team as a bulk operation. Once I was asked to create a team and add 280 studets to the team. As I am the laziest person I know, it was a quite difficult and time consuming task

Solution

I spent about an hour researching a way to do this programatically. And I found the PowerShell module for MS Teams. Since I had a small experiance with batch scripting, I manageed to use and tweak the commands and complete my task.

But I managed to create a powershell and batch script, in case I had to do it again. In this blog post I am sharing my script.

Prerequisites

  • In your search bar in Windows 10 or in your Start button, search for PowerShell. Select the Windows PowerShell app and right click and Run as administrator.

  • Then you need to install Microsoft Teams module in Powershell. This allows us to manipulate teams with command lines. Type following command in your powershell window.

      Install-Module -Name MicrosoftTeams
    
  • Command will prompt for installation confirmation. Select yes to all and proceed.

  • If you do not see any errors, you are good to go.

  • Then, we need to login to MS Teams using Powershell.

      Connect-MicrosoftTeams
    

    This will popup an login window and you need to login with the correct teams account.

Running the Script

You need following information before running the script.

  • Group ID of the team.

    You can run

      Get-Team    
    

    command to find all the group IDs of your teams.

    Else you can get the teams invite link from teams UI. You can find the group Id in the URL parameters.

  • Create a csv (comma seperated values) file.

    The simplest way to achieve this is to open a notepad and type following

    email
    abc@test.com
    cde@test.com
    fgh@test.com

then save that in .csv format. For this example I am going to save it as myemails.csv

  • Create a .bat file and paste the following code

      @echo off
    
      set /p GROUP_ID="Enter Group ID: "
      set /p FILE_LOCATION="Enter the path to the emails csv file: "
      set /p USER_TYPE="Enter the user type (Owner/Member): "
    
      echo ID %GROUP_ID% 
      echo path %FILE_LOCATION%
    
      Powershell.exe -Command "Import-Csv -Path '%FILE_LOCATION%' | foreach{Add-TeamUser -GroupId %GROUP_ID% -user $_.email -role %USER_TYPE%}"
    
      pause
    
  • Then run the script

      ./script.bat
    

BUT…

If you are lazy like me, you would not be thrilled to install all these modules, login and all these process. For that I have created a powershell script.

  • Create a file with extension .ps1

        script.ps1
    
  • Now copy the following code to that file.

      Write-Host "Starting the script..."
    
      $FILE_LOCATION = Read-Host -Prompt 'Enter the path to the emails csv file'
      $GROUP_ID = Read-Host -Prompt 'Input Group ID'
      $USER_TYPE = Read-Host -Prompt 'User Type(Owner/Member)'
      $USER_EMAILS = Import-Csv -Path "$FILE_LOCATION"
    
      if (Get-Module -ListAvailable -Name MicrosoftTeams) {
          Write-Host "Microsoft Teams Module already Installed"
      } 
      else {
          try {
              Write-Host "Installing Microsoft Teams Module"
              Install-Module -Name MicrosoftTeams -AcceptLicense -AllowClobber -Confirm:$False -Force                
          }
          catch [Exception] {
              $_.message 
              exit
          }
      }
    
      Connect-MicrosoftTeams
    
      foreach ($email in $USER_EMAILS) {   
          Write-Host "--------------------------------------------------------------"
          Write-Host ("Adding " + $email.email)
          Add-TeamUser -GroupId $GROUP_ID -user $email.email -role $USER_TYPE    
      }
    
      Write-Host " "
      Write-Host " "
      Write-Host "--------------------------------------------------------------"
      Write-Host "Users added to the team successfully !"
      Write-Host "--------------------------------------------------------------"
    
      CMD /c PAUSE
      
    

If you are even lazier…

  • You have all the things you need in this git repository

    see what I did there…🤣 ? Only the people read until the end can get the git repository. 😂😂😂

If you enjoyed this post and if you think this is valuable for others, please feel free to share this post. And please let me know if you have any ideas for automation.

Also Please consider adding a ⭐ to my repository.

Share this article :)