Bem, em um post anterior, mostrei como são os pre-requisitos pra poder deixar um ambiente pronto para mandar comando para gerenciar o domínio do Microsoft365. Agora, organizando tudo, mostro aqui uma maneira mais objetiva, e simples de aplicar.
Pra começar, é preciso montar um arquivo CSV, com a seguinte estrutura:
SALA01, Sala de Aula de Teste 01, prof01@contoso.com, PROFESSOR
SALA02, Sala de Aula de Teste 02, prof02@contoso.com, PROFESSOR
SALA01, Sala de Aula de Teste 01, aluno01@contoso.com, ALUNO
SALA02, Sala de Aula de Teste 02, aluno02@contoso.com, ALUNO
SALA01, Sala de Aula de Teste 01, aluno03@contoso.com, ALUNO
SALA02, Sala de Aula de Teste 02, aluno04@contoso.com, ALUNO
SALA02, Sala de Aula de Teste 02, aluno05@contoso.com, ALUNO
SALA01, Sala de Aula de Teste 01, aluno06@contoso.com, ALUNO
SALA02, Sala de Aula de Teste 02, aluno07@contoso.com, ALUNO
Uma descrição de cada coluna pode ser útil (em ordem):
- Código da Turma (deve ser único no domínio)
- Nome de exibição da Turma
- Usuário da pessoa que será incluída na turma (normalmente o email)
- Papel que a pessoa desempenhará na turma (se professor ou aluno - em maiúsculas SEMPRE)
Guarde-o em um caminho que você lembre pra usar essa referência logo mais.
Agora, abra uma janela de Administrador do PowerShell ISE (ou do PowerShell mesmo, mas garanta que seja aberta em modo Administrador) e execute o seguinte script:
Import-Module -Name AzureAD
Import-Module -Name MSOnline
Import-Module -Name MicrosoftTeams
function Assign-TeamMembersAndOwners{
param($CsvFile, $roomNick, $room)
$csvHeader = @('TeamNick', 'DisplayName', 'PERSON', 'ROLE')
Import-Csv $CsvFile -Header $csvHeader | Where-Object { $_.TeamNick -eq $roomNick } | ForEach-Object {
if ( $_.ROLE -eq 'PROFESSOR' ) {
Add-TeamUser -GroupId $sala.GroupId -User $PSItem.PERSON -Role Owner -ErrorAction Continue
} elseif ( $_.ROLE -eq 'ALUNO' ) {
Add-TeamUser -GroupId $sala.GroupId -User $PSItem.PERSON -Role Member -ErrorAction Continue
}
}
}
function Create-TeamsAndMembers{
param($CsvFile)
$csvHeader = @('TeamNick', 'DisplayName', 'PERSON', 'ROLE')
Import-Csv $CsvFile -Header $csvHeader | Where-Object { $_.ROLE -eq 'PROFESSOR' } | ForEach-Object {
$roomNick = $_.TeamNick
$roomDisplayName = $_.DisplayName
$sala = New-Team -Owner $_.PERSON -MailNickName $roomNick -DisplayName $roomDisplayName -ErrorAction Continue
Assign-TeamMembersAndOwners -CsvFile $CsvFile -roomNick $roomNick -room $sala
}
}
Isso deixará dois comandos novos disponíveis, o Assign-TeamMembersAndOwners e o Create-TeamsAndMembers. No ensalamento, você só precisará do Create-TeamsAndMembers.
Agora, na mesma janela de linha de comando, basta executar:
Create-TeamsAndMembers -CsvFile caminho_arquivo_pro_csv
E será o suficiente pra criar as turmas, atribuir os professores e os alunos de maneira adequada.
Alguns comentários sobre esse script:
- Os registros não precisam estar em qq ordem;
- Se algum usuário não existir (por não ter sido cadastrado, por exemplo) será exibida uma mensagem de erro e continuará o processamento, adicionando o resto dos usuários. É prudente verificar essas mensagens depois pra saber quais foram os usuários que tiveram problemas pra serem adicionados;
- No CSV não precisa ter só uma turma, pode ter todas as turmas nele. Mas se você quiser executar em um arquivo CSV que tenha dados de uma só turma, ele também serve, mas vc teria e re-executar ele pra cada CSV de cada turma... bem, fica na sua conveniência