Поиск разрешений, необходимых для запуска командлета Exchange
Оболочка PowerShell позволит найти разрешения, необходимые для запуска командлетов Exchange или Exchange Online. В этой процедуре описаны роли управления доступом на основе ролей (RBAC) и соответствующие группы ролей, позволяющие получить доступ к определенному командлету, даже если в вашей организации предусмотрены настраиваемые роли, группы ролей или специальные назначения ролей.
Совет
В настоящее время процедуры, описанные в этой статье, не работают с командлетами группы Microsoft 365 (*-UnifiedGroup) в Exchange Online PowerShell.
Что нужно знать перед началом работы
Предполагаемое время для завершения каждой процедуры: менее 5 минут.
PowerShell можно использовать только для выполнения этих процедур.
Процедуры, описанные в этой статье, не работают в PowerShell для обеспечения безопасности & соответствия требованиям. Дополнительные сведения о разрешениях на соответствие требованиям безопасности & см. в следующих статьях:
Перед выполнением процедур, описанных в этой статье, вам необходимо назначить разрешения. Возможны следующие варианты:
Разрешения Exchange Server: членство в одной из следующих групп ролей:
- Управление соответствием требованиям
- Управление санацией
- Organization Management
- View-Only Organization Management
Разрешения Exchange Online: членство в одной из следующих групп ролей:
- Управление соответствием требованиям
- Делегированная установка
- Управление санацией
- Organization Management
- View-Only Organization Management
Разрешения Microsoft Entra. Членство в ролях глобального администратора* или глобального читателя предоставляет пользователям необходимые разрешения и разрешения для других функций Microsoft 365.
Важно!
* Корпорация Майкрософт рекомендует использовать роли с наименьшими разрешениями. Использование учетных записей с более низкими разрешениями помогает повысить безопасность организации. Глобальный администратор — это очень привилегированная роль, которая должна быть ограничена сценариями чрезвычайных ситуаций, когда вы не можете использовать существующую роль.
Поиск разрешений, необходимых для запуска командлетов, с помощью PowerShell
Если вы еще этого не сделали, откройте среду Exchange PowerShell, которая вас интересует:
- Exchange Online: подключение к Exchange Online PowerShell.
- Exchange Online Protection (организации Microsoft 365 без почтовых ящиков Exchange Online): подключитесь к Exchange Online Protection PowerShell.
- Exchange Server. Откройте командную консоль Exchange или подключитесь к серверам Exchange с помощью удаленной оболочки PowerShell.
Замените
<Cmdlet>
и (<Parameter1>,<Parameter2>,...
при необходимости) значениями, которые вы хотите использовать, и выполните следующую команду:$Perms = Get-ManagementRole -Cmdlet <Cmdlet> [-CmdletParameters <Parameter1>,<Parameter2>,...]
Совет
Если указать несколько параметров, возвращаются только роли, которые включают все указанные параметры в командлете.
Выполните следующую команду:
$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
.