通过EWS或PowerShell为安全组的Exchange邮箱委派访问

时间:2014-10-17 18:42:33

标签: .net powershell delegates exchange-server exchangewebservices

目前,我可以通过转到“代理访问”部分,查找组以及设置权限级别,通过Outlook将代理安全组添加到邮箱。

我想自动执行此操作,但尚未找到适用于群组的方法。

以下PowerShell将添加组,但仅设置文件夹权限。它不会将该组添加为委托。

Add-MailboxFolderPermission -Identity "mailbox:\Calendar" -User "group" -AccessRights Editor

以下.NET EWS代码将完全按照我想要添加组的方式添加用户帐户。如果我将一个组添加到列表中,它将失败,产生以下错误:“委托不映射到Active Directory中的用户。”

Public Function setEditor(mailbox As String, listDelegates As System.Collections.Generic.List(Of String)) As Boolean
    Dim setEditorResult As Boolean = False
    Try
        Dim listDelUser As New List(Of DelegateUser)
        For Each strDelUser As String In listDelegates
            Dim delUser As DelegateUser = New DelegateUser(strDelUser)
            delUser.Permissions.CalendarFolderPermissionLevel = DelegateFolderPermissionLevel.Editor
            listDelUser.Add(delUser)
        Next
        Dim responses As Collection(Of DelegateUserResponse) = service.AddDelegates(New Mailbox(mailbox), MeetingRequestsDeliveryScope.NoForward, listDelUser)
        For Each response As DelegateUserResponse In responses
            If response.Result = 0 Then
                setEditorResult = True
            Else
                'log error
                Dim err As String = response.ErrorMessage
            End If
        Next
    Catch ex As Exception
        'log error
    End Try
    Return setEditorResult
End Function

有没有人知道这样做的方法适用于安全组?谢谢!

更新2014年10月31日

我找到了一种方法来将安全组添加为代理并正确设置其权限。

Set-Mailbox -Identity "MAILBOX" -GrantSendOnBehalfTo "DELEGATE"
Add-MailboxFolderPermission -Identity "MAILBOX:\Calendar" -User "DELEGATE" -AccessRights Editor

对于多个代表,请使用以下内容:

Set-Mailbox -Identity "MAILBOX" -GrantSendOnBehalfTo @{Add="DELEGATE1","DELEGATE2"}
Add-MailboxFolderPermission -Identity "MAILBOX:\Calendar" -User "DELEGATE1" -AccessRights Editor
Add-MailboxFolderPermission -Identity "MAILBOX:\Calendar" -User "DELEGATE2" -AccessRights Reviewer

不幸的是,我仍然无法找到一种方法来检查代表是否收到发送给我的会议相关消息的副本。安全组的复选框。

3 个答案:

答案 0 :(得分:0)

我无法告诉您如何使用Add-Mailboxfolderpermission(我猜你不能)按组设置权限,但您可以使用它来为所有组成员分配权限:

Get-ADGroupMember "group" | % {Get-Mailbox $_.SamAccountName | Add-Mailboxfolderpermission -Identity "mailbox:\Calendar"
-AccessRights Editor}

这将遍历组中的所有成员,并为-Identity参数中定义的邮箱文件夹分配权限。

此致

答案 1 :(得分:0)

我找到了一种方法来将安全组添加为代理并正确设置其权限。

Set-Mailbox -Identity "MAILBOX" -GrantSendOnBehalfTo "DELEGATE"
Add-MailboxFolderPermission -Identity "MAILBOX:\Calendar" -User "DELEGATE" -AccessRights Editor

对于多个代表,请使用以下内容:

Set-Mailbox -Identity "MAILBOX" -GrantSendOnBehalfTo @{Add="DELEGATE1","DELEGATE2"}
Add-MailboxFolderPermission -Identity "MAILBOX:\Calendar" -User "DELEGATE1" -AccessRights Editor
Add-MailboxFolderPermission -Identity "MAILBOX:\Calendar" -User "DELEGATE2" -AccessRights Reviewer

不幸的是,我仍然无法找到一种方法来检查代表收到发送给我的会议相关消息的副本。安全组的复选框。

答案 2 :(得分:0)

我意识到线程已经过去了#34;到现在为止,我正在研究一个类似的场景,并且有一个你可能感兴趣的信息。

你这么说:

"在与微软打开一个案例之后,通过PowerShell或EWS,目前看来这是不可能的。这是两种语言/ API的设计限制。如果我找到其他相关的信息,我会跟进,但现在看起来这是Outlook中的手动过程。"

不确定上述设计限制的含义是否仅根据您的特定方案(在主题标题中明确说明)仅指安全组,或者一般情况下无法使用PowerShell / EWS进行检查"代表收到发送给我的会议相关消息的副本"。

最后一部分,我发现了一个有趣的EWS主题,请查看:

MeetingRequestsDeliveryScope enumeration

搜索了一下,其他Exchange人员已经玩过它,例如上周有人写过这个:

Exploring Delegates with the EWS Managed API – Part I: The EWS Delegate Functions

希望这有帮助。