Standardise (#1)

* Actually write it as a function

Signed-off-by: Luke Tainton <luke@tainton.uk>

* Fix readme headers
This commit was merged in pull request #1.
This commit is contained in:
2020-03-22 14:21:57 +00:00
committed by GitHub
parent 452f1e49b3
commit dfa4207cb3
3 changed files with 90 additions and 63 deletions

View File

@@ -1,53 +0,0 @@
function Import-TeamsUsers {
Param(
[parameter(Mandatory=$true,HelpMessage="Specify Group ID")]
$GroupId,
[parameter(Mandatory=$true,HelpMessage="Specify CSV file")]
$File
)
# Import CSV file and required module
$Users = Import-CSV $File
$UserCount = $Users | Measure-Object | Select-Object -expand count
Import-Module -Name MicrosoftTeams
# Check Team exists
Try {
$Team = Get-Team -GroupId $GroupId
If ($Team) {
$TeamName = $Team.DisplayName
Write-Host -ForegroundColor Green "Team $TeamName exists!"
}
} Catch [System.UnauthorizedAccessException] {
# User is not authenticated
Write-Host -ForegroundColor Red "You need to authenticate to Microsoft Teams before continuing. Please run 'Connect-MicrosoftTeams' and try again."
Break
} Catch [System.Net.Http.HttpRequestException] {
# Team does not exist
Write-Host -ForegroundColor Red "Team with ID $GroupId does not exist!"
Break
}
$Consent = Read-Host -Prompt "You are about to add $UserCount users. Are you sure? [y/N]"
If ($Consent -eq "y" -Or $Consent -eq "Y") {
$Users | ForEach-Object {
$User = $_.email
$Role = $_.role
Write-Host "Adding user $User with role $Role"
Add-TeamUser -GroupId $GroupId -Role $Role -User $User -ErrorAction SilentlyContinue
}
} Else {
Write-Host -ForegroundColor Red "Aborting."
}
}
$GroupId = ""
$File = ""
If ($GroupId -And $File) {
Import-TeamsUsers -GroupId $GroupId -File $File
} Else {
Write-Host -ForegroundColor Red "`$GroupId and/or `$File missing."
}

84
Import-TeamsUsers.psm1 Normal file
View File

@@ -0,0 +1,84 @@
Function Import-TeamsUsers {
<#
.SYNOPSIS
Import-TeamsUsers is a Powershell function that will enrol users from a CSV file into a given Microsoft Teams group.
.DESCRIPTION
Import-TeamsUsers is a Powershell function that will enrol users from a CSV file into a given Microsoft Teams group.
It has two required parameters (switches): -GroupId and -File.
.PARAMETER GroupId
Specifies the unique identified for the destination Team. This can be retrieved from Powershell by executing the Get-Team cmdlet.
.PARAMETER File
The path to the CSV file that contains your users. Can either be an absolute path or relative path.
.EXAMPLE
Import-TeamsUsers -GroupId "00000000-0000-0000-0000-000000000000" -File "users.csv"
#>
Param(
[parameter(Mandatory=$true, position=0, ParameterSetName='Params', HelpMessage="Specify Group ID")]
[string]$GroupId,
[parameter(Mandatory=$true, position=1, ParameterSetName='Params', HelpMessage="Specify CSV file")]
[string]$File
)
Begin {
##### IMPORT CSV FILE #####
If ($File) {
$Users = Import-CSV $File
} Else {
Write-Host -ForegroundColor Red "CSV file not specified or does not exist."
Exit
}
##### CHECK MODULE IS INSTALLED AND IMPORTED #####
if (Get-Module -ListAvailable -Name MicrosoftTeams) {
Import-Module -Name MicrosoftTeams
Connect-MicrosoftTeams
} else {
Write-Host -ForegroundColor Red "Module MicrosoftTeams doesn't exist. Please run 'Install-Module -Name MicrosoftTeams' and retry."
Exit
}
##### CHECK TEAM EXISTS #####
Try {
$Team = Get-Team -GroupId $GroupId
If ($Team) {
$TeamName = $Team.DisplayName
Write-Host -ForegroundColor Green "Team $TeamName exists!"
}
} Catch [System.UnauthorizedAccessException] {
# User is not authenticated or does not have access
Write-Host -ForegroundColor Red "You do not have access to manage this team."
Exit
} Catch [System.Net.Http.HttpRequestException] {
# Team does not exist
Write-Host -ForegroundColor Red "Team with ID $GroupId does not exist."
Exit
}
}
Process {
$UsersAdded = 0;
$UserCount = $Users | Measure-Object | Select-Object -expand count
$Consent = Read-Host -Prompt "You are about to add $UserCount users. Are you sure? [y/N]"
If ($Consent -eq "y" -Or $Consent -eq "Y") {
$Users | ForEach-Object {
$User = $_.email
$Role = $_.role
Write-Host "Adding user $User with role $Role"
If (Add-TeamUser -GroupId $GroupId -Role $Role -User $User -ErrorAction SilentlyContinue) {$global:UsersAdded++}
}
} Else {
Write-Host -ForegroundColor Red "Aborting."
Exit
}
}
End {
Write-Host -ForegroundColor Green "$UsersAdded added successfully."
}
}

View File

@@ -3,26 +3,22 @@ A Powershell script that imports users from a CSV into a Microsoft Teams team.
# Setting up your device # Setting up your device
This script runs via PowerShell. If you're on Windows, you'll already have this. If not, please download it from the [releases page](https://github.com/PowerShell/PowerShell/releases). Once you've got PowerShell: This script runs via PowerShell. If you're on Windows, you'll already have this. If not, please download it from the [releases page](https://github.com/PowerShell/PowerShell/releases). Once you've got PowerShell:
1. Open PowerShell. 1. Open PowerShell as an administrator.
2. Allow remote scripts to execute by running `Set-ExecutionPolicy RemoteSigned`. If you don't do this, the script won't run. 2. Allow remote scripts to execute by running `Set-ExecutionPolicy RemoteSigned`. If you don't do this, the script won't run.
3. Install the Microsoft Teams module. To do this, run `Install-Module -Name MicrosoftTeams`. Accept any prompts that you are given. 3. Install the Microsoft Teams module. To do this, run `Install-Module -Name MicrosoftTeams`. Accept any prompts that you are given.
# Gathering information # Gathering information
You'll need to do a few things before you can run the script: You'll need to do a few things before you can run the script:
1. Have a CSV file with the users you want to add. This needs to be in the format `email,role`. You can copy the template if required. 1. Have a CSV file with the users you want to add. This needs to be in the format `email,role`. You can copy the template if required.
2. Import the Microsoft Teams module. Run `Import-Module -Name MicrosoftTeams` in your Powershell terminal. 2. Get your group ID. Import the MS Teams module (`Import-Module -Name MicrosoftTeams`) and run `Get-Team -User <EMAIL>`, substituting `<EMAIL>` for your Office 365 email address, to list all teams you are a member of.
3. Authenticate to Microsoft Teams. Run `Connect-MicrosoftTeams` in your Powershell terminal and follow the instructions.
4. Get your group ID. Run `Get-Team -User <EMAIL>`, substituting `<EMAIL>` for your Office 365 email address, to list all teams you are a member of.
# Running the script # Running the script
1. Copy or move the CSV file to the same folder that the `Import-TeamsUsers.ps1` file is in. 1. Download the repository to your PC.
2. Open the `Import-TeamsUsers.ps1` file. 2. Change directory to where you downloaded the repository and import the Import-TeamsUsers module (`Import-Module ./Import-TeamsUsers.psm1`).
3. Modify the `$GroupId` variable to the Group ID you found from step 4 in the section above. 3. Run `Import-TeamsUsers -GroupId <GROUPID> -File <FILE>`.
4. Modify the `$File` variables to the name of your CSV file.
5. Run the script.
# Need help? # Need help?
If you require assistance running the script, please [send me an email](mailto:luke@tainton.uk?subject=I%20need%20help%20running%20Import-TeamsUsers). If you require assistance running the script, see the help by executing `Get-Help Import-TeamsUsers` (requires importing the module first - see step 2 above). If you still need help, please [send me an email](mailto:luke@tainton.uk?subject=I%20need%20help%20running%20Import-TeamsUsers).
# Issues? Want a new feature? # Issues? Want a new feature?
If you're having problems with the script or have an idea for a new feature, please check [here](https://github.com/luketainton/Import-TeamsUsers/issues) to see if someone else is having the same problem, and open an issue if one doesn't already exist. If you can implement a fix or feature request, please file a pull request! If you're having problems with the script or have an idea for a new feature, please check [here](https://github.com/luketainton/Import-TeamsUsers/issues) to see if someone else is having the same problem, and open an issue if one doesn't already exist. If you can implement a fix or feature request, please file a pull request!