Adicionar / remover permissões de calendário no Office 365 / Exchange via PowerShell

Este é um tutorial sobre como exibir, adicionar e remover permissões de calendário de caixa de correio no Office 365 (e no Exchange local) para seus usuários via PowerShell. Por exemplo, você precisa conceder permissões de leitura ao calendário da caixa de correio da sala para alguns usuários. Você pode conceder permissões de calendário de caixas de correio de sala para usuários específicos ou para um grupo de segurança AD . Na maioria dos casos, você deve atribuir permissões de calendário a um grupo de segurança. Nesse caso, para conceder acesso ao calendário da caixa de correio específico, tudo o que você precisa fazer é adicionar o usuário ao grupo do Active Directory (sem alterar as permissões do calendário da caixa de correio por meio do PowerShell).

Por padrão, na organização Exchange e Office 365, os usuários não podem visualizar e-mails do Outlook ou itens de calendário de outros usuários. A única permissão fornecida a todos os usuários por padrão é a capacidade de visualizar os dados de disponibilidade em outros calendários do usuário (esta é a função AvailabilityOnly ).

Leia Mais:

Tudo o que você precisa saber sobre o Microsoft 365
Usando o Powershell para aplicar políticas de mensagens a usuários de equipes
Microsoft 365 vs G Suite: qual pacote de produtividade é melhor para seus negócios?
Como configurar um Tenant de Microsoft 365: Criação de grupos
Como configurar um Tenant de Microsoft 365: Criação e inclusão de Domínio

Os usuários podem conceder de forma independente as permissões necessárias para pastas e itens da caixa de correio do Outlook a outros usuários na interface do Outlook / OWA. Infelizmente, no Exchange 2016/2013 e no Exchange Online (Office 365), o administrador não pode gerenciar centralmente as permissões do calendário a partir da GUI (Exchange MMC, EAC – Centro de Administração do Exchange ou portal de administração do Office 365). Mas você pode usar um cmdlet Add-MailboxFolderPermission integrado , que permite gerenciar as permissões do usuário em qualquer pasta de caixa de correio do PowerShell (este cmdlet apareceu pela primeira vez no Exchange Server 2010). Este cmdlet também tem suporte no Office 365.

Conectando o Office 365 / Exchange do PowerShell

Em primeiro lugar, você precisa se conectar ao seu Office 365 ou locatário local do Exchange.

1- Execute a CLI do Windows PowerShell como administrador:

2- Execute o seguinte comando para salvar suas credenciais de administrador na variável PowerShell:

$ LiveCred = Get-Credential

3- Se você estiver tentando se conectar ao Office 365, especifique suas credenciais de administrador de locatário do Office 365;

4- Agora você precisa criar uma nova sessão:
Para Office 365:

$ Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $ LiveCred -Authentication Basic –AllowRedirection

Para Exchange Server 2010, 2013, 2016 e 2019:

$ Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https: // <your-target-exchange-server-address> / powershell / -Credential $ LiveCred

5- Em nosso ambiente, para se conectar ao servidor Exchange CAS de destino, devemos usar a conexão http (em vez de https) e a autenticação Kerberos. O comando de conexão deve ser assim:

$ Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http: // ny-msg-02 / powershell / -Credential $ LiveCred -Authentication Kerberos

6- A próxima etapa é importar comandos de gerenciamento do Office 365 / Exchange de outra sessão para o console do PowerShell:

Import-PSSession $ Session

Dica: Acontece que quando você executa o comando Import-PSSession, obtém um erro:
Import-PSSession: Os arquivos não podem ser carregados porque a execução de scripts foi desativada neste sistema. Forneça um certificado válido para assinar os arquivos.

Nesse caso, você precisa permitir a execução do script, definindo a política de execução como RemoteSigned conforme exemplo abaixo:

Set-ExecutionPolicy RemoteSigned

#DicaProfissa: Faça um curso profissionalizante!
Garanta um curso certificado na área de TI e Software pela plataforma de estudos online Udemy.
Clique aqui e confira todos os cursos mais recentes em tecnologia!

Dica: Se você se conectou diretamente ao servidor Exchange local, pode iniciar o Shell de Gerenciamento do Exchange imediatamente ou iniciar uma sessão regular do Shell de Gerenciamento do Exchange e carregar os cmdlets do Exchange com o comando:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

Como obter permissões de calendário usando o PowerShell?

  • Você pode exibir as permissões atuais do calendário (nível de pasta) da caixa de correio especificada usando o cmdlet Get-MailboxFolderPermission (este cmdlet está disponível no serviço baseado em nuvem e no Exchange local):
Get-MailboxFolderPermission username: \ calendar
  • Altere o nome de usuário para a conta de usuário para a qual deseja verificar as permissões do calendário.

Dica: Se, ao executar os comandos a seguir, você receber um erro:
Get-MailboxFolderPermission: O termo ‘Get-MailboxFolderPermission’ não é reconhecido como o nome de um cmdlet, função, arquivo de script ou programa operável. Verifique a grafia do nome ou se um caminho foi incluído, verifique se o caminho está correto e tente novamente, isso significa que você não concluiu as etapas para se conectar ao seu locatário do Exchange / Office 365 e não importou cmdlets do PowerShell Exchange para o seu sessão. Leia atentamente e siga as etapas do parágrafo anterior.

Nota: Se este comando retornar que ‘username: \ calendar’ não pode ser encontrado, provavelmente significa que o usuário possui configurações de idioma do Outlook diferentes do inglês. Apropriadamente, a pasta Calendário pode ser chamada de forma diferente (calendar \ kalender \ calendario \ calendrier \ календарь). Por exemplo, para o idioma holandês (nl-NL), para visualizar as permissões do calendário, use o comando:

Nome de usuário Get-MailboxFolderPermission: Agenda
  • Você pode obter o nome da agenda na configuração de idioma do usuário atual com o comando:
(Get-MailboxFolderStatistics username -FolderScope Calendar) .Identity
  • Verifique as permissões atuais do calendário com o comando:
Get-MailboxFolderPermission brett.jackson: \ calendar
  • Como você pode ver, a função padrão AvailabilityOnly é atribuída apenas a uma pasta de calendário:
  • Você pode obter a lista de todas as permissões de calendários de caixa de correio em sua organização usando o seguinte comando:
Get-Mailbox | ForEach-Object {Get-MailboxFolderPermission $ _ ”: \ calendar”} | Onde {$ _. User-like “Default”} | Selecione identidade, usuário, direitos de acesso

No Exchange local, você pode visualizar as configurações da agenda do usuário em um banco de dados de caixa de correio específico com o comando:

Get-Mailbox –database mbxdbname | ForEach-Object {get-MailboxFolderPermission $ _ ”: \ calendar”}
  • Altere mbxdbname para o nome do banco de dados de caixa de correio do Exchange.

#DicaProfissa: Faça um curso profissionalizante!
Garanta um curso certificado na área de TI e Software pela plataforma de estudos online Udemy.
Clique aqui e confira todos os cursos mais recentes em tecnologia!

Funções integradas de acesso a calendário e pasta de correio

Ao gerenciar as permissões da agenda e da pasta de e-mail, você pode usar as seguintes funções integradas do Exchange:

  • Proprietário – oferece controle total da pasta da caixa de correio: ler, criar, modificar e excluir todos os itens e pastas. Além disso, esta função permite gerenciar permissões de itens;
  • Editor de Publicação – ler, criar, modificar e excluir itens / subpastas (todas as permissões, exceto o direito de alterar as permissões);
  • Editor – leia, crie, modifique e exclua itens (não é possível criar subpastas);
  • PublishingAuthor – cria, lê todos os itens / subpastas. Você pode modificar e excluir apenas os itens criados;
  • Autor – cria e lê itens; editar e excluir os próprios itens;
  • NonEditingAuthor – acesso de leitura total e criação de itens. Você pode excluir apenas seus próprios itens;
  • Revisor – somente ler itens da pasta;
  • Contribuidor – cria itens e pastas (não pode ler itens);
  • AvailabilityOnly – leia as informações de Livre / Ocupado do calendário;
  • LimitedDetails ;
  • Nenhum – nenhuma permissão para acessar pastas e arquivos.

Como definir permissões de calendário do Office 365 / Exchange usando o PowerShell?

1- Para conceder ao usuário2 as permissões para visualizar e editar itens de calendário do usuário1 , execute o seguinte comando:

Add-MailboxFolderPermission -Identity [email protected]: \ calendar -user [email protected] -AccessRights Editor

2- Se você precisar alterar as permissões padrão para a pasta de calendário (para permitir que todos os usuários da organização visualizem um calendário do usuário especificado), execute o comando:

Set-MailboxFolderPermission -Identity [email protected]: \ calendar -User Default -AccessRights Revisor

3- Verifique as permissões de calendário atuais novamente usando o cmdlet Get-MailboxFolderPermissions, elas devem mudar:

Get-MailboxFolderPermission -Identity [email protected]: \ calendar

4- Você também pode conceder permissões para a caixa de correio não a um usuário individual, mas ao grupo de distribuição do Exchange:

New-DistributionGroup -Type Security -Name “Resource Calendar Owners” -Alias ​​“grResourceCalendarAccess”

add-MailboxFolderPermission -Identity [email protected]: \ calendar -User grResourceCalendarAccess -AccessRights Owner

5- Em alguns casos, você precisa conceder permissões de Revisor em uma pasta de calendário em todas as caixas de correio de usuário em sua organização do Exchange. Você pode fazer essa alteração de permissões de calendário em massa usando um script PowerShell simples. Para alterar a permissão de calendário padrão para todas as caixas de correio para Revisor:

Get-Mailbox | ForEach-Object {Set-MailboxFolderPermission $ _ ”: \ calendar” -User Default -AccessRights Reviewer}

6- Além disso, você pode preparar um arquivo CSV com uma lista de usuários e atribuir a eles permissões para acessar a agenda de um usuário específico:

Import-Csv users.csv | foreach { add-MailboxFolderPermission -Identity "[email protected]:\calendar" -User $_.alias -AccessRights Owner }

#DicaProfissa: Faça um curso profissionalizante!
Garanta um curso certificado na área de TI e Software pela plataforma de estudos online Udemy.
Clique aqui e confira todos os cursos mais recentes em tecnologia!

Como adicionar calendário compartilhado no Outlook 2016?

Para visualizar outros calendários no Outlook 2016 (incluindo recursos da sala, calendários compartilhados), mude para a visualização do calendário e selecione o tipo de calendário que deseja adicionar. Você pode selecionar o usuário da Agenda  (Lista de endereços global – GAL), Abrir calendário compartilhado (você deve especificar o nome do usuário)Lista de salas, Internet (calendário da web).

Por exemplo, você deseja adicionar um calendário da Lista de endereços global. Encontre o nome do calendário que deseja adicionar ao Outlook e clique em OK. O calendário compartilhado deve aparecer  na seção Meus Calendários na seção Calendários Compartilhados.

Como remover e redefinir as permissões do calendário via PowerShell?

1- Para remover a permissão, use o cmdlet Remove-MailboxFolderPermission:

Remove-MailboxFolderPermission -Identity [email protected]: \ calendar –user [email protected]

2- Se você deseja redefinir as permissões da agenda do usuário para as padrão, execute:

Get-MailboxFolderPermission brett.jackson: \ Calendar | % {Remove-MailboxFolderPermission -Identity $ _. Identity -User $ _. User}

3- Para excluir algumas entradas de permissões “padrão” do script de remoção, use o seguinte one-liner do PowerShell:

Get-MailboxFolderPermission brett.jackson: \ Calendar | ? {$ _. User -notmatch "^ (Padrão | Secretário | Anônimo) $"} | % {Remove-MailboxFolderPermission -Identity $ _. Identity -User $ _. User.ADRecipient.ExchangeObjectId.Guid -Confirm: $ false}

4- Agora você pode desconectar sua sessão do PowerShell do Office 365 / Exchange:

Remove-PSSession $ Session

Este artigo foi útil?

Para manter um padrão de qualidade para vocês, investimos em um ótimo plano de hospedagem, CDN Pago, Plugins de Otimização para o Site, etc…

Ajude-nos a manter o projeto ativo! 

Acompanhe as novidades em tempo real. Siga nosso perfil no Instagram..

Felipe Santos
Felipe Santos é Arquiteto de Cloud e Segurança, com vivência em Administração de Ambientes Windows Server, Cluster, Storages, Backups Veeam e Office 365.
pt_BRPortuguese

ATÉ 90% DE DESCONTO

DECOLE SUA CARREIRA!!

Quer dar um upgrade na sua carreira? 

Invista em você e saia na frente! Conquiste aquele emprego dos sonhos em 2022!