👌 IMPROVE: Allow creation of new group
Signed-off-by: Luke Tainton <luke@tainton.uk>
This commit is contained in:
@@ -10,19 +10,32 @@ Function Import-TeamsUsers {
|
|||||||
.PARAMETER File
|
.PARAMETER File
|
||||||
The path to the CSV file that contains your users. Can either be an absolute path or relative path.
|
The path to the CSV file that contains your users. Can either be an absolute path or relative path.
|
||||||
|
|
||||||
|
.PARAMETER Create
|
||||||
|
If specified, create a new Group first, then add the users from the CSV file.
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
Import-TeamsUsers -File "users.csv"
|
Import-TeamsUsers -File "users.csv"
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Import-TeamsUsers -Create -File "users.csv"
|
||||||
#>
|
#>
|
||||||
|
|
||||||
Param(
|
Param(
|
||||||
[parameter(Mandatory=$true, position=1, ParameterSetName='Params', HelpMessage="Specify CSV file")]
|
[parameter(Mandatory=$true, position=1, ParameterSetName='Params', HelpMessage="Specify CSV file")]
|
||||||
[string]$File
|
[string]$File,
|
||||||
|
[parameter(Mandatory=$false, position=2, ParameterSetName='Params', HelpMessage="Create new Teams group")]
|
||||||
|
[switch]$Create
|
||||||
)
|
)
|
||||||
|
|
||||||
Begin {
|
Begin {
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
##### IMPORT CSV FILE #####
|
##### IMPORT CSV FILE #####
|
||||||
$Users = Import-CSV $File
|
Try {
|
||||||
|
$Users = Import-CSV $File
|
||||||
|
} Catch {
|
||||||
|
Write-Host -ForegroundColor Red "$File is not a valid CSV file."
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
##### CHECK MODULE IS INSTALLED AND IMPORTED #####
|
##### CHECK MODULE IS INSTALLED AND IMPORTED #####
|
||||||
if (Get-Module -ListAvailable -Name MicrosoftTeams) {
|
if (Get-Module -ListAvailable -Name MicrosoftTeams) {
|
||||||
@@ -35,23 +48,38 @@ Function Import-TeamsUsers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Process {
|
Process {
|
||||||
##### GET USER'S TEAMS #####
|
If ($Create) {
|
||||||
Clear-Host
|
##### CREATE NEW TEAM #####
|
||||||
Write-Host -ForegroundColor Green "Getting your teams - please wait"
|
Clear-Host
|
||||||
$EligibleTeams = @()
|
$NewTeamName = Read-Host -Prompt "Name of the new group"
|
||||||
Get-Team -User $Email -Verbose:$false | ForEach-Object {
|
$NewTeamDesc = Read-Host -Prompt "Group description"
|
||||||
$CTeamId = $_.GroupId
|
$NewTeamPriv = Read-Host -Prompt "P[u]blic or P[r]ivate?"
|
||||||
$CTeamName = $_.DisplayName
|
If ($NewTeamPriv -Eq "u") {
|
||||||
If (Get-TeamUser -GroupId $CTeamId | Select-Object -Property User,Role | Where-Object {$_.User -eq $Email} | Where-Object {$_.Role -eq "owner"}) {
|
$NewTeamVis = "Public"
|
||||||
$EligibleTeams += @{GroupId = $CTeamId; DisplayName = $CTeamName}
|
} Elseif ($NewTeamPriv -Eq "r") {
|
||||||
|
$NewTeamVis = "Private"
|
||||||
}
|
}
|
||||||
Clear-Variable -Name CTeamId
|
$NewTeam = New-Team -DisplayName $NewTeamName -MailNickName $NewTeamName -Description "Testing team creation from PowerShell" -Visibility $NewTeamVis
|
||||||
Clear-Variable -Name CTeamName
|
$GroupId = $NewTeam.GroupId
|
||||||
|
} Else {
|
||||||
|
##### GET USER'S TEAMS #####
|
||||||
|
Clear-Host
|
||||||
|
Write-Host -ForegroundColor Green "Getting your teams - please wait"
|
||||||
|
$EligibleTeams = @()
|
||||||
|
Get-Team -User $Email -Verbose:$false | ForEach-Object {
|
||||||
|
$CTeamId = $_.GroupId
|
||||||
|
$CTeamName = $_.DisplayName
|
||||||
|
If (Get-TeamUser -GroupId $CTeamId | Select-Object -Property User,Role | Where-Object {$_.User -eq $Email} | Where-Object {$_.Role -eq "owner"}) {
|
||||||
|
$EligibleTeams += @{GroupId = $CTeamId; DisplayName = $CTeamName}
|
||||||
|
}
|
||||||
|
Clear-Variable -Name CTeamId
|
||||||
|
Clear-Variable -Name CTeamName
|
||||||
|
}
|
||||||
|
Clear-Host
|
||||||
|
Write-Host "Teams that you own:"
|
||||||
|
$EligibleTeams | ForEach-Object {[PSCustomObject]$_} | Format-Table 'GroupId', 'DisplayName' -AutoSize
|
||||||
|
$GroupId = Read-Host -Prompt "GroupId of the desired group"
|
||||||
}
|
}
|
||||||
Clear-Host
|
|
||||||
Write-Host "Teams that you own:"
|
|
||||||
$EligibleTeams | ForEach-Object {[PSCustomObject]$_} | Format-Table 'GroupId', 'DisplayName' -AutoSize
|
|
||||||
$GroupId = Read-Host -Prompt "GroupId of the desired group"
|
|
||||||
|
|
||||||
##### ENROL USERS #####
|
##### ENROL USERS #####
|
||||||
$global:UsersAdded = 0;
|
$global:UsersAdded = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user