Eu tenho um pequeno aplicativo que recupera todos os compromissos do Exchange 2010 e os coloca em um aplicativo de gerenciamento de quadro de horários. O código para recuperar os compromissos é o seguinte (ele usa o Exchange Web Services):
var mailbox = service.ResolveName("smtp:" + emailAddress).FirstOrDefault(o => o.Mailbox.MailboxType == MailboxType.Mailbox);
var folderId = new FolderId(WellKnownFolderName.Calendar, mailbox.Mailbox.Address);
var res = service.FindAppointments(folderId, new CalendarView(thisDay, nextDay.AddSeconds(-1)));
Isso funciona bem se eu der à conta de serviço GenericAll
permissões usando esta linha no EMS:
Get-MailboxDatabase | Add-ADPermission -user "DOMAIN\User" -InheritanceType All -AccessRights GenericAll
No entanto, GenericAll
dá muito poder à conta e eu gostaria de reduzi-las apenas para permissões relacionadas à leitura. Eu tentei diferentes permutações das permissões disponíveis, mas nada parece funcionar (estou reiniciando o IIS entre os testes para garantir que as permissões não sejam armazenadas em cache). Por exemplo, esta linha não funciona não :
Get-MailboxDatabase | Add-ADPermission -user "DOMAIN\User" -InheritanceType All -AccessRights GenericRead,ListChildren,ListObject
Eu vi scripts online que dariam as permissões apenas para ler calendários, mas todos, infelizmente, parecem enumerar as caixas de correio existentes. O que eu preciso é de uma solução que é executada apenas uma vez e funcionará para todas as caixas de correio criadas no futuro.