我正在尝试绘制一个图表,说明哪个Exchange用户对哪个Exchange邮箱具有哪些权限,并根据权限类型对其进行着色。
截至目前,我无法找到Exchange考虑的所有类型的权限。
我可以使用EWS找出用户自己被授予访问邮箱的权限:
foreach(var permission in calendarFolder.Permissions) {
// do sth.
}
但是,管理员可能会通过将他添加到" Full Access"许可清单。
此列表存储在哪里?如何在没有PowerShell的情况下阅读它?
答案 0 :(得分:1)
您无法使用EWS(或任何Exchange邮箱API),您只能访问文件夹级别DACL,您需要阅读的内容是Mailbox DACL,它只能是通过Exchange命令行管理程序(Get-MailboxPermissions)或通过从Active Directory读取msexchmailboxsecuritydescriptor来访问。
您可以使用自动发现获取特定用户的AutoMapping邮箱http://technet.microsoft.com/en-us/library/hh529943(v=exchg.141).aspx,这通常会告诉您特定用户已被授予FullAccess到哪个邮箱已启用AutoMapping。 (但这不会返回自动映射尚未设置的邮箱)
AutodiscoverService esService = new AutodiscoverService(ExchangeVersion.Exchange2013);
esService.RedirectionUrlValidationCallback = adAutoDiscoCallBack;
esService.Credentials = ncCred;
GetUserSettingsResponse gsr = esService.GetUserSettings("user@domain.com", UserSettingName.AlternateMailboxes);
AlternateMailboxCollection amCol = (AlternateMailboxCollection)gsr.Settings[UserSettingName.AlternateMailboxes];
foreach (AlternateMailbox am in amCol.Entries){
Console.WriteLine(am.DisplayName);
}
干杯 格伦