Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 在Exchange Online上运行Add-DistributionGroupMember PS cmdlet时出现权限错误_Azure_Powershell_Azure Active Directory_Exchange Server - Fatal编程技术网

Azure 在Exchange Online上运行Add-DistributionGroupMember PS cmdlet时出现权限错误

Azure 在Exchange Online上运行Add-DistributionGroupMember PS cmdlet时出现权限错误,azure,powershell,azure-active-directory,exchange-server,Azure,Powershell,Azure Active Directory,Exchange Server,我目前正在尝试在Azure AD中自动创建用户,并使用PowerShell脚本将其添加到Exchange Online中的通讯组中。为此,我遵循了指南-我已使用证书设置了应用程序注册,这就是我对Azure AD和Exchange Online进行身份验证的方式-无需人工干预 我在脚本中运行的特定Exchange cmdlet(对于EXO部分)是adddistributiongroupmember-member”user@domain.com“-identity”dlist”-绕过Security

我目前正在尝试在Azure AD中自动创建用户,并使用PowerShell脚本将其添加到Exchange Online中的通讯组中。为此,我遵循了指南-我已使用证书设置了应用程序注册,这就是我对Azure AD和Exchange Online进行身份验证的方式-无需人工干预

我在脚本中运行的特定Exchange cmdlet(对于EXO部分)是
adddistributiongroupmember-member”user@domain.com“-identity”dlist”-绕过SecurityGroupManagerCheck
,运行它后,我收到以下错误输出:

Active Directory operation failed on XXXXXXXXXXXXXXX.XXXXXXXXXXX.PROD.OUTLOOK.COM. This error is not retriable. Additional information: Insufficient access rights to perform the operation.
Active directory response: 00002098: SecErr: DSID-XXXXXXXX, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
    + CategoryInfo          : NotSpecified: (:) [Add-DistributionGroupMember], ADOperationException
    + FullyQualifiedErrorId : [Server=XXXXXXXXXXXXX,RequestId=8ac3130a-4bbe-41a0-b062-4768b6f51234,TimeStamp=1/3/2021 2:18:13 PM] [FailureCategory=Cmdlet-ADOperationException] XXXXXXX,Microsoft.Exchange.Management.RecipientTasks.AddDistribu
   tionGroupMember
    + PSComputerName        : outlook.office365.com
其他cmdlet,例如
Get Mailbox
工作正常,但这个特定的邮箱经常给我带来问题。我已经尝试将Azure中我能想到的所有API权限都授予应用程序,包括委派权限和应用程序权限,但我仍然面临错误。以下是当前的完整列表,但我没有取得任何成功:

我还尝试用应用程序权限替换某些委派权限,但也没有效果。我尝试为应用程序分配各种角色,如中所述,每次我发现
访问权限不足,无法执行操作时都会出现错误

有人能告诉我为什么吗?我应该在何处以及如何授予应用程序将用户添加到分发(邮件)列表所需的权限


在过去的几天里,我一直在四处寻找,没有找到答案。任何帮助都将不胜感激。

如果我没有错的话,在添加成员之前,您应该是小组的管理者的一部分

第1步:

首先执行以下命令之一:

Set-DistributionGroup <NameOfGroup> -ManagedBy "<Your Alias>" -BypassSecurityGroupManagerCheck
设置DistributionGroup-ManagedBy”“-BypassSecurityGroupManagerCheck
或:

设置DistributionGroup Accounting-ManagedBy@{Add=“”}-BypassSecurityGroupManagerCheck
第二步:

然后执行命令将用户添加到组中

Add-DistributionGroupMember -Identity <NameOfGroup> -Member user@contoso.com
添加DistributionGroupMember-Identity-Memberuser@contoso.com

如果我没有错,那么在添加成员之前,您应该是组的管理者的一部分

第1步:

首先执行以下命令之一:

Set-DistributionGroup <NameOfGroup> -ManagedBy "<Your Alias>" -BypassSecurityGroupManagerCheck
设置DistributionGroup-ManagedBy”“-BypassSecurityGroupManagerCheck
或:

设置DistributionGroup Accounting-ManagedBy@{Add=“”}-BypassSecurityGroupManagerCheck
第二步:

然后执行命令将用户添加到组中

Add-DistributionGroupMember -Identity <NameOfGroup> -Member user@contoso.com
添加DistributionGroupMember-Identity-Memberuser@contoso.com

根据我的测试,添加
Exchange.ManageAsApp
应用程序权限并分配Exchange服务管理员角色就足够了

使用添加
Exchange.ManageAsApp
应用程序权限创建AAD应用程序

$appName = 'Exo_V2_App'

$api = (Get-AzureADServicePrincipal -Filter "AppID eq '00000002-0000-0ff1-ce00-000000000000'")

$permission = $api.AppRoles | Where-Object { $_.Value -eq 'Exchange.ManageAsApp' }

$apiPermission = [Microsoft.Open.AzureAD.Model.RequiredResourceAccess]@{
    ResourceAppId  = $api.AppId ;
    ResourceAccess = [Microsoft.Open.AzureAD.Model.ResourceAccess]@{
        Id   = $permission.Id ;
        Type = "Role"
    }
}

$myApp = New-AzureADApplication -DisplayName $appName -ReplyUrls 'http://localhost' -RequiredResourceAccess $apiPermission

$mySP = New-AzureADServicePrincipal -AppID $myApp.AppID

$myApp | Format-List DisplayName,ObjectID,AppID
将服务主体分配给Exchange服务管理员角色

$directoryRole = 'Exchange Service Administrator'

$RoleId = (Get-AzureADDirectoryRole | Where-Object {$_.displayname -eq $directoryRole}).ObjectID

Add-AzureADDirectoryRoleMember -ObjectId $RoleId -RefObjectId $mySP.ObjectID -Verbose

您可以尝试创建一个新的clean Azure AD应用程序,而无需添加额外的配置来进行测试。

根据我的测试,添加
Exchange.ManageAsApp
应用程序权限并分配Exchange服务管理员角色就足够了

使用添加
Exchange.ManageAsApp
应用程序权限创建AAD应用程序

$appName = 'Exo_V2_App'

$api = (Get-AzureADServicePrincipal -Filter "AppID eq '00000002-0000-0ff1-ce00-000000000000'")

$permission = $api.AppRoles | Where-Object { $_.Value -eq 'Exchange.ManageAsApp' }

$apiPermission = [Microsoft.Open.AzureAD.Model.RequiredResourceAccess]@{
    ResourceAppId  = $api.AppId ;
    ResourceAccess = [Microsoft.Open.AzureAD.Model.ResourceAccess]@{
        Id   = $permission.Id ;
        Type = "Role"
    }
}

$myApp = New-AzureADApplication -DisplayName $appName -ReplyUrls 'http://localhost' -RequiredResourceAccess $apiPermission

$mySP = New-AzureADServicePrincipal -AppID $myApp.AppID

$myApp | Format-List DisplayName,ObjectID,AppID
将服务主体分配给Exchange服务管理员角色

$directoryRole = 'Exchange Service Administrator'

$RoleId = (Get-AzureADDirectoryRole | Where-Object {$_.displayname -eq $directoryRole}).ObjectID

Add-AzureADDirectoryRoleMember -ObjectId $RoleId -RefObjectId $mySP.ObjectID -Verbose
您可以尝试创建一个新的clean Azure AD应用程序,而无需添加额外的配置来进行测试