Skip to content

Instantly share code, notes, and snippets.

@jcallaghan
Last active February 21, 2019 17:27
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save jcallaghan/226b5f74a01ac7be3fd2183375141cca to your computer and use it in GitHub Desktop.
<#
# Reference
Teams PowerShell - https://docs.microsoft.com/en-us/powershell/module/teams/?view=teams-ps
Add-TeamsUser - https://docs.microsoft.com/en-us/powershell/module/teams/add-teamuser?view=teams-ps
# PowerShell Module
Find-Module MicrosoftTeams
Install-Module MicrosoftTeams
Get-Command –Module MicrosoftTeams
# CSV Data example
upn,role
AdeleV@[tenant].OnMicrosoft.com,owner
DebraB@[tenant].OnMicrosoft.com,owner
IrvinS@[tenant].OnMicrosoft.com,member
JoniS@[tenant].OnMicrosoft.com,Member
LidiaH@[tenant].OnMicrosoft.com,member
FractureMan@[tenant].OnMicrosoft.com,member
FractureMan@[tenant].OnMicrosoft.com,memmber
# Likely errors
User not found:
Add-TeamUser : Error occurred while executing
Code: Request_ResourceNotFound
Message: Resource 'FractureMan@[tenant].OnMicrosoft.com' does not exist or one of its queried reference-property objects are not present.
User already exists:
Add-TeamUser : Error occurred while executing Add-TeamUser
Code: Request_BadRequest
Message: One or more added object references already exist for the following modified properties: 'members'.
#>
# Variables
$teamName = "ABC Network"
$path = "C:\TeamsUsers.csv"
$csv = Import-csv -path $path
# Connect to Teams (login prompt will follow)
Connect-MicrosoftTeams
# Get all Teams
$teams = Get-Team
$teams | ft
# Filter for Team to target
$targetTeam = $teams | Where-Object { $_.DisplayName -eq $teamName }
if($targetTeam -ne $null){
Write-Host $targetTeam.DisplayName, $targetTeam.GroupId
}else{
Write-Host "Team not found, script stopping..." -ForegroundColor Red
break
}
# Get current users of targeted team
Get-TeamUser -GroupId $targetTeam.GroupId | select Name, User, Role | ft
# Add each user in CSV file to targeted team
$csv | Foreach-Object {
# Data from test CSV (7 sample accounts - 2 admins, 3 members, 1 account doesn't exist, 1 invalid role)
$upn = $_.upn
$role = $_.role
# Check role is valid
if($role -eq "owner" -or $role -eq "member"){
Write-Host "Adding user to team:", $upn, $role -ForegroundColor Green
}else{
Write-Host "Error:", $upn, $role -ForegroundColor Red
Write-Host "Role above is invalid, script stopping..."
break
}
# Add user to targeted team
Add-TeamUser -GroupId $targetTeam.GroupId -User $upn -Role $role
}
# Disconnect from Teams
Disconnect-MicrosoftTeams
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment