找出哪些用户对邮箱具有完全访问权限

时间:2014-09-04 16:36:52

标签: active-directory exchange-server exchangewebservices exchange-server-2010

我正在尝试绘制一个图表,说明哪个Exchange用户对哪个Exchange邮箱具有哪些权限,并根据权限类型对其进行着色。

截至目前,我无法找到Exchange考虑的所有类型的权限。

我可以使用EWS找出用户自己被授予访问邮箱的权限:

foreach(var permission in calendarFolder.Permissions) {
    // do sth.
}

但是,管理员可能会通过将他添加到" Full Access"许可清单。

此列表存储在哪里?如何在没有PowerShell的情况下阅读它?

1 个答案:

答案 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);
        }

干杯 格伦