Powershell da semana #3 - Adicionar BookInPolicy a salas de reunião
O powershell da semana vai ajudar você administrador que precisa concluir o seguinte requisito: suas salas de reunião precisam ter aceite/recusa automáticos porém apenas determinados usuários
Caso qualquer outro usuário tente agendar reuiões naquela sala, ela automaticamente irá recusar a solicitação.
Um exemplo prático disso seria uma sala de treinamento que só pode receber solicitações de agendamento do time de RH. Qualquer pessoa que não esteja dentro da lista de RH receberá uma recusa automática da sala, enquanto que quem for membro terá o comportamento de agendamento automático e tratativa de conflitos de forma automatizada também.
Sem mais delongas, vamos ao Script.
Importante
Todos os códigos devem ser executados após conectar-se remotamente ao Exchange. Para entender melhor como conectar no Exchange Online, consulte a documentação a seguir: https://docs.microsoft.com/pt-br/powershell/exchange/exchange-online/connect-to-exchange-online-powershell/connect-to-exchange-online-powershell?view=exchange-ps
Carregar a função no powershell
Apenas use Ctrl+C / Ctrl+V no Powershell e você irá permitir a execução do comando Add-CalendarBookInPolicy
Função para adicionar membros no BookInPolicy
function Add-CalendarBookInPolicy { Param( $RoomName , $User ) $bookInPolicy = (Get-CalendarProcessing -Identity $RoomName).BookInPolicy $UserMbx = Get-mailbox $User $bookInPolicy += $UserMbx.LegacyExchangeDN Set-CalendarProcessing -Identity $RoomName -BookInPolicy $bookInPolicy -AllRequestInPolicy $false -AllBookInPolicy $false -AutomateProcessing AutoAccept }
Função para remover membros do BookInPolicy
function Remove-CalendarBookInPolicy { Param( $RoomName , $User ) $roomMbx=Get-mailbox $RoomName $bookInPolicy = (Get-CalendarProcessing -Identity $roomMbx).BookInPolicy $UserIdentity = (Get-Mailbox $User).LegacyExchangeDN $bookInPolicy.Remove($UserIdentity) Set-CalendarProcessing -Identity $RoomName -BookInPolicy $bookInPolicy -AllRequestInPolicy $false -AllBookInPolicy $false -AutomateProcessing AutoAccept }
Executar o cmdlet individualmente
A sintaxe do comando é super simples:
# Para adicionar um membro no BookInPolicy Add-CalendarBookInPolicy -RoomName RoomMailbox -User UserMailbox
# Para remover um membro do BookInPolicy Remove-CalendarBookInPolicy -RoomName RoomMailbox -User UserMailbox
Ou seja, em -RoomName vamos colocar a informação da sala de reunião e em -User vamos colocar a informação do User.
Se tiver dúvidas em quais parâmetros são aceitos para consultar uma mailbox recomendo ler este artigo (busque por -Identity). Exemplo:
Add-CalendarBookInPolicy -RoomName "sala@dominio.com" -User usuario@dominio.com.br
Remove-CalendarBookInPolicy -RoomName "sala@dominio.com.br" -user "usuario@dominio.com.br"
Atenção
Caso você receba um alerta dizendo que o usuário já existe na lista, fique tranquilo, o comando vai rodar para cada um dos usuários até o fim.
Importante
também é bom lembrar que não é obrigatório usar aspas na informação de RoomName ou User, desde que não exista espaços na identidade.
Executar o cmdlet em massa
Para executar em massa, basta criar um arquivo CSV com o formato a seguir:
EmailAddress
email1@dominio.com.br
email2@dominio.com.br
email3@dominio.com.br
Salve com o formato CSV (arquivo separado por vírgula) e armazene em um local fácil para execução
Depois de salvar o arquivo execute o comando a seguir:
$path = "C:\caminho_para_o_csv\Users.csv" $users = Import-Csv -Path $path $roomName = "RoomMailbox" foreach ($user in $users){ Write-Host "Adicionando" $user.EmailAddress "na lista de BookInPolicy" Add-CalendarBookInPolicy -RoomName $roomName -User $User.EmailAddress }
$Path é o caminho até o arquivo CSV (recomendo salvar como users.csv porque aí é só fazer ctrl+c, ctrl+v mesmo).
$users importa o arquivo CSV no caminho especificado.
$roomName deve contar a informação da RoomMailbox em aspas.
Conclusão
Neste comando facilitamos uma regra que, no Exchange Online, seria bem complexa de se atingir: permitir que apenas um grupo específico de usuários possa enviar solicitações de agendamento para uma sala de reunião e garantir que pessoas que não estão dentro deste grupo recebam uma recusa automática. Obrigado e até a próxima!