【问题标题】:C# Get Detailed Delegate Information from ExchangeC# 从 Exchange 获取详细的代表信息
【发布时间】:2018-09-17 21:53:56
【问题描述】:

我正在尝试获取对某些用户的日历具有编辑或作者权限的代表列表。我曾尝试使用 Exchange Web 服务 (EWS) API,但我似乎没有正确的权限级别来进行查询。这是我正在使用的代码:

ExchangeService service = new ExchangeService();
service.UseDefaultCredentials = true;
service.Url = new Uri("https://mailurl/Exchange.asmx");

Mailbox mailbox = new Mailbox("some_user@some_domain.com");
var result = service.GetDelegates(mailbox, true);

上面的代码导致以下异常,我猜是权限相关的:“在商店中找不到指定的对象。”

然后,我尝试使用 System.DirectoryServices 命名空间(DirectoryEntry、DirectorySearcher 以及 FindOne 方法)来查询 Active Directory (AD) 以获取给定用户的委托列表。我找到了 publicdelegates 属性,但这似乎让我得到了一个所有 委托名称的列表,并且不包含有关每个委托所拥有的特定权限级别的任何其他信息。我希望只获得具有编辑或作者权限的代表列表。

有什么建议吗?提前致谢。

【问题讨论】:

    标签: c# active-directory exchangewebservices directoryservices


    【解决方案1】:

    您可以使用 Exchange 命令行管理程序和 Get-MailboxFolderPermission https://docs.microsoft.com/en-us/powershell/module/exchange/mailboxes/get-mailboxfolderpermission?view=exchange-ps,这将允许您仅获取日历文件夹本身上设置的权限。使用上述委托的问题是,这只会捕获 Outlook 委托,但用户可能仍被用户或管理员明确授予文件夹的权限。要从托管代码运行上述内容,您只需要https://docs.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2010/ff326159(v%3Dexchg.140)

    【讨论】:

    • 感谢您的建议。我试过了,但是当我从 shell 运行 New-PSSession cmdlet 以连接到远程 Exchange 服务器时出现“拒绝访问”错误。我想这意味着我没有足够的权限来连接?
    • 您需要委派 Exchange 管理权限才能执行此操作
    猜你喜欢
    • 1970-01-01
    • 2010-11-02
    • 2012-06-02
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多