Поиск разрешений, необходимых для запуска командлета Exchange

Оболочка PowerShell позволит найти разрешения, необходимые для запуска командлетов Exchange или Exchange Online. В этой процедуре описаны роли управления доступом на основе ролей (RBAC) и соответствующие группы ролей, позволяющие получить доступ к определенному командлету, даже если в вашей организации предусмотрены настраиваемые роли, группы ролей или специальные назначения ролей.

Совет

В настоящее время процедуры, описанные в этой статье, не работают с командлетами группы Microsoft 365 (*-UnifiedGroup) в Exchange Online PowerShell.

Что нужно знать перед началом работы

  • Предполагаемое время для завершения каждой процедуры: менее 5 минут.

  • PowerShell можно использовать только для выполнения этих процедур.

  • Для выполнения этой процедуры нужно получить права администратора. В частности, необходим доступ к командлетам Get-ManagementRole и Get-ManagementRoleAssignment. По умолчанию доступ к этим командлетам предоставляется ролями конфигурации только представления или управления ролями в Exchange Online, которые по умолчанию назначаются только группам ролей "Управление организацией" и "Управление организацией только для просмотра".

    В облачных организациях членство в роли глобальных администраторов в идентификаторе Microsoft Entra предоставляет необходимые разрешения.

  • Процедуры, описанные в этой статье, не работают в PowerShell для обеспечения безопасности & соответствия требованиям. Дополнительные сведения о разрешениях на соответствие требованиям безопасности & см. в следующих статьях:

Совет

Возникли проблемы? Обратитесь за помощью к участникам форумов Exchange. Посетите форумы по адресу: Exchange Server или Exchange Online.

Поиск разрешений, необходимых для запуска командлетов, с помощью PowerShell

  1. Если вы еще этого не сделали, откройте среду Exchange PowerShell, которая вас интересует:

  2. Замените <Cmdlet> и ( <Parameter1>,<Parameter2>,... при необходимости) значениями, которые вы хотите использовать, и выполните следующую команду:

    $Perms = Get-ManagementRole -Cmdlet <Cmdlet> [-CmdletParameters <Parameter1>,<Parameter2>,...]
    

Совет

Если указать несколько параметров, возвращаются только роли, которые включают все указанные параметры в командлете.

  1. Выполните следующую команду:

    $Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-Table -Auto Role,RoleAssigneeType,RoleAssigneeName}
    

Интерпретация результатов

Результаты содержат сведения, указанные ниже.

  • Роль. Указывает роль, которая предоставляет доступ к командлету или сочетание командлета и параметров. Имена ролей, начинающиеся с "My", — это роли пользователей, которые позволяют обычным пользователям работать с принадлежащими им объектами (например, с собственным почтовым ящиком или группами рассылки).

  • RoleAssigneeType и RoleAssigneeName: эти значения связаны между собой:

    • RoleAssigneeType — это тип объекта, которому назначена роль. Для ролей администратора это значение обычно представляет собой группу ролей, но это также может быть политика назначения ролей, группа безопасности или пользователь.
    • RoleAssigneeName — это имя группы ролей, политики назначения ролей, группы безопасности или пользователя.

Устранение неполадок

Что делать, если результаты не отображаются?

  • Убедитесь, что имена командлета и его параметров введены верно.
  • Несколько параметров для командлета могут быть определены не в одной роли (некоторые параметры могут находиться в одной роли, а другие — в другой роли). Сделайте это по одному шагу за раз:
    • Выполните первую команду без параметров, а затем выполните вторую команду.
    • Добавьте один параметр в первую команду, а затем выполните вторую команду.
    • Повторите предыдущий шаг, добавив другие параметры в первую команду перед выполнением второй команды.

В противном случае результаты, скорее всего, не будут вызваны одним из следующих условий:

  • Командлет или параметры определяются в роли, которая по умолчанию не назначается ни одной группе ролей.
  • Командлет или параметры недоступны в вашей среде. Например, вы указали командлет Exchange Online или Exchange Online параметры в локальной среде Exchange.

Чтобы найти роли в среде (если таковые есть), содержащие командлет или параметры, замените <Cmdlet> и при необходимости на значения, которые необходимо использовать, <Parameter1>,<Parameter2>,... и выполните следующую команду:

Get-ManagementRoleEntry -Identity *\<Cmdlet>  [-Parameters <Parameter1>,<Parameter2>,...]

Совет

Вы можете использовать подстановочные знаки (*) в именах командлетов и параметров (например, *-Mailbox*).

Если команда возвращает ошибку с сообщением о том, что объект найти не удалось, значит в вашей среде недоступны командлет или параметры.

Если команда возвращает результаты, командлет или параметры доступны в вашей среде, но требуемая роль не назначается ни одной группе ролей. Чтобы найти роли, которые не назначены ни одной группе ролей, выполните следующую команду:

$na = Get-ManagementRole; $na | foreach {If ((Get-ManagementRoleAssignment -Role $_.Name -Delegating $false) -eq $null) {$_.Name}}

Включение областей ролей управления

Области ролей управления (в частности, области записи) определяют, где могут работать командлеты. Например, вся организация или только для определенных объектов пользователя.

Чтобы включить область сведения в раздел Использование PowerShell для поиска разрешений, необходимых для выполнения выходных данных командлета, добавьте *Scope* во вторую команду:

$Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-List Role,RoleAssigneeType,RoleAssigneeName,*Scope*}

Подробные сведения об областях ролей управления см. в разделе Общие сведения о областях ролей управления.

Поиск всех ролей, назначенных конкретному пользователю

Чтобы просмотреть все роли, назначенные конкретному пользователю, замените <UserIdentity> именем, псевдонимом или адресом электронной почты пользователя и выполните следующую команду:

Get-ManagementRoleAssignment -RoleAssignee <UserIdentity> -Delegating $false | Format-Table -Auto Role,RoleAssigneeName,RoleAssigneeType

Например:

Get-ManagementRoleAssignment -RoleAssignee julia@contoso.com -Delegating $false | Format-Table -Auto Role,RoleAssigneeName,RoleAssigneeType

Совет

Параметр RoleAssignee возвращает пользователям как прямые назначения ролей (нечасто), так и косвенные назначения ролей, предоставленные пользователю через членство в группах ролей.

Поиск всех пользователей, которым назначена определенная роль

Чтобы просмотреть всех пользователей, которым назначена определенная роль, замените <Role name> именем роли и выполните следующую команду:

Get-ManagementRoleAssignment -Role "<Role name>" -GetEffectiveUsers -Delegating $false | Where-Object {$_.EffectiveUserName -ne "All Group Members"} | Format-Table -Auto EffectiveUserName,Role,RoleAssigneeName,AssignmentMethod

Например:

Get-ManagementRoleAssignment -Role "Mailbox Import Export"  -GetEffectiveUsers -Delegating $false | Where-Object {$_.EffectiveUserName -ne "All Group Members"} | Format-Table -Auto EffectiveUserName,Role,RoleAssigneeName,AssignmentMethod

Поиск членов группы ролей

Чтобы увидеть членов определенной группы ролей, замените <Role group name> именем группы ролей и выполните следующую команду:

Get-RoleGroupMember "<Role group name>"

Например:

Get-RoleGroupMember "Organization Management"

Совет

Чтобы просмотреть имена всех доступных групп ролей, выполните команду Get-RoleGroup.