Поиск разрешений, необходимых для запуска командлета 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
Если вы еще этого не сделали, откройте среду 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
.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по