Поиск разрешений, необходимых для запуска командлета ExchangeFind the permissions required to run any Exchange cmdlet

Оболочка PowerShell позволит найти разрешения, необходимые для запуска командлетов Exchange или Exchange Online. В этой процедуре описаны роли управления доступом на основе ролей (RBAC) и соответствующие группы ролей, позволяющие получить доступ к определенному командлету, даже если в вашей организации предусмотрены настраиваемые роли, группы ролей или специальные назначения ролей.You can use PowerShell to find the permissions required to run any Exchange or Exchange Online cmdlet. This procedure shows the role-based access control (RBAC) management roles and role groups that give you access to a specified cmdlet—even if your organization has custom roles, custom role groups, or custom role assignments.

Что нужно знать перед началом работыWhat do you need to know before you begin?

  • Предполагаемое время выполнения процедуры: менее пяти минут.Estimated time to complete this procedure: less than 5 minutes.

  • Для выполнения этой процедуры можно использовать только PowerShell.You can only use PowerShell to perform this procedure.

  • Для выполнения этой процедуры нужно получить права администратора. В частности, необходим доступ к командлетам Get-ManagementRole и Get-ManagementRoleAssignment. По умолчанию доступ к этим командлетам предоставляется вместе с ролями View-Only Configuration или Role Management, которые назначаются группе ролей управления организацией с правами только на просмотр (View-Only Organization Management) и группе ролей управления организацией (Organization Management).Basically, you need to be an administrator to complete this procedure. Specifically, you need access to the Get-ManagementRole and Get-ManagementRoleAssignment cmdlets. By default, access to these cmdlets is granted by the View-Only Configuration or Role Management roles, which are assigned to the View-Only Organization Management and Organization Management role groups.

  • Процедуры, описанные в этом разделе не работают в Office 365 безопасности & центре соответствия требованиям. Дополнительные сведения о разрешениях в центр соответствия требованиям и безопасности содержатся в разделе разрешения в центре соответствия требованиям Office 365.The procedures in this topic don't work in the Office 365 Security & Compliance Center. For more information about permissions in the Security & Compliance Center, see Permissions in Office 365 Compliance Center.

  • Описанные в этой статье процедуры не подходят для Exchange Online Protection (EOP). Дополнительные сведения о разрешениях в EOP см. в статье Feature Permissions in EOP.The procedures in this topic don't work in Exchange Online Protection (EOP). For more information about permissions in EOP, see Feature Permissions in EOP.

Tip

Возникли проблемы? Обращение за помощью в форумах Exchange. Посетите форумы в: Exchange Server или Exchange Online.Having problems? Ask for help in the Exchange forums. Visit the forums at: Exchange Server or Exchange Online.

Поиск разрешений, необходимых для запуска командлетов, с помощью PowerShellUse PowerShell to find the permissions required to run a cmdlet

  1. Откройте среду PowerShell, в которой требуется запустить командлет.Open the PowerShell environment where you want to run the cmdlet.

  2. Выполните следующую команду, чтобы определить командлета и, возможно, один или несколько параметров в командлете. Убедитесь, что для замены <Cmdlet> и при необходимости <Parameter1>,<Parameter2>,... реальные имена командлета и параметра, которые нуждаются в. При указании нескольких параметров, разделенных запятыми, возвращаются только роли, включая все параметры.Run the following command to identify the cmdlet and, optionally, one or more parameters on the cmdlet. Be sure to replace <Cmdlet> and optionally, <Parameter1>,<Parameter2>,... with the actual cmdlet and parameter names you are interested in. If you specify multiple parameters separated by commas, only the roles that include all of the parameters are returned.

    $Perms = Get-ManagementRole -Cmdlet <Cmdlet> [-CmdletParameters <Parameter1>,<Parameter2>,... ]
    
  3. Выполните следующую команду:Run the following command:

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

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

Результаты содержат сведения, указанные ниже.The results contain the following information:

  • Роль: указывает роль, который предоставляет доступ к командлета и их комбинации командлет и параметры. Обратите внимание, что имена ролей, начинающихся с «My» роли пользователей, которые позволяют обычных пользователей для работы с объектами, которые им принадлежат (для, например, своего почтового ящика или их группами рассылки).Role: Indicates the role that gives access to the cmdlet or the combination of cmdlet and parameters. Note that role names that begin with "My" are user roles that allow regular users to operate on objects they own (for example, their own mailbox or their distribution groups).

  • RoleAssigneeType и RoleAssigneeName: эти значения между связанных с ними. RoleAssigneeType — это тип объекта, имеющей роли, назначенные ему, а RoleAssigneeName — это имя объекта. RoleAssigneeType может быть группы ролей, политики назначения ролей, группы безопасности или пользователя. Как правило назначенных ролях администратора для группы ролей.RoleAssigneeType and RoleAssigneeName: These values are inter-related. RoleAssigneeType is the type of object that has the role assigned to it, and RoleAssigneeName is the name of the object. RoleAssigneeType can be a role group, role assignment policy, security group, or user. Typically, administrator roles are assigned to role groups.

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

Что делать, если результаты не отображаются?What if there are no results?

  • Убедитесь, что имена командлета и его параметров введены верно.Verify that you entered the cmdlet and parameter names correctly.

  • Возможно, для командлета было задано слишком много параметров, не все из которых определены в одной роли. Попробуйте выполнить шаг 2, задав только имя командлета, а затем с помощью шага 3 убедиться, что этот командлет доступен в вашей среде. Затем по отдельности добавьте параметры, которые нужно было добавить при выполнении шага 2, и перейдите к шагу 3.You might have entered too many parameters, and all of the parameters on the cmdlet aren't defined in a single role. Try specifying only the cmdlet name in Step 2, and run Step 3 to verify that the cmdlet is available in your environment. Then, add parameters one at a time to Step 2 before running Step 3.

  • Эти возможные причины иметь одно решение.These possible causes have the same solution:

    • Возможно, вы ввели командлет или параметры для роли, которая по умолчанию никому не назначена.You might have entered a cmdlet or parameters that are defined in a role that isn't assigned to anyone by default.

    • Возможно, вы ввели командлет или параметр, недоступные в вашей среде (например, командлет или параметр Exchange Online в локальной среде Exchange 2016).You might have entered a cmdlet or parameter that isn't available in your environment. For example, when you enter an Exchange Online cmdlet or parameters in an on-premises Exchange 2016 environment.

    Выполните следующую команду, чтобы найти роль, который содержит командлета или параметры. Убедитесь, что для замены <Cmdlet> и при необходимости <Parameter1>,<Parameter2>,... реальные имена командлета и параметра, которые нуждаются в. Обратите внимание, что можно использовать подстановочные знаки (*) в именах командлета и параметра (например, *-Mailbox*).Run the following command to find the role that contains the cmdlet or parameters. Be sure to replace <Cmdlet> and optionally, <Parameter1>,<Parameter2>,... with the actual cmdlet and parameter names you are interested in. Note that you can use wildcard characters (*) in the cmdlet and parameter names (for example, *-Mailbox*).

    Get-ManagementRoleEntry -Identity *\<Cmdlet>  [-Parameters <Parameter1>,<Parameter2>,... ]
    
    • Если команда возвращает ошибку с сообщением о том, что объект найти не удалось, значит в вашей среде недоступны командлет или параметры.If the command returns an error saying the object couldn't be found, the cmdlet or parameters aren't available in your environment.

    • Если команда возвращает один или несколько записей для имени, ролии Параметры, командлет (или параметров в командлете) доступна в вашей среде, но необходимые роли не будет назначен всем пользователям. Чтобы просмотреть все роли, которые не назначается всем пользователям, выполните следующую команду:If the command returns one or more entries for Name, Role, and Parameters, the cmdlet (or parameters on the cmdlet) is available in your environment, but the required role isn't assigned to anyone. To see all roles that aren't assigned to anyone, run the following command:

      $na = Get-ManagementRole ; $na | foreach {If ((Get-ManagementRoleAssignment -Role $_.Name -Delegating $false) -eq $null) {$_.Name}}
      
  • Области ролей управления определяют сферу действия командлетов (в частности, области записи).Management role scopes define where cmdlets can operate (in particular, write scopes).

    Чтобы включить сведения об областях при выполнении шага 2, используйте следующую команду:To include scope information in Step 2, substitute the following command:

    $Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-List Role,RoleAssigneeType,RoleAssigneeName,*Scope*}
    
  • Чтобы увидеть все роли, назначенные определенному пользователю, выполните следующую команду:To see all roles assigned to a specific user, run the following command:

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

    Пример:For example:

    Get-ManagementRoleAssignment -RoleAssignee julia@contoso.com -Delegating $false | Format-Table -Auto Role,RoleAssigneeName,RoleAssigneeType
    
  • Чтобы увидеть всех пользователей, которым назначена определенная роль, выполните следующую команду:To see all users who are assigned a specific role, run the following command:

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

    Пример:For example:

    Get-ManagementRoleAssignment -Role "Mailbox Import Export"  -GetEffectiveUsers -Delegating $false | Where-Object {$_.EffectiveUserName -ne "All Group Members"} | Format-Table -Auto EffectiveUserName,Role,RoleAssigneeName,AssignmentMethod
    
  • Чтобы увидеть членов определенной группы ролей, выполните следующую команду:To see the members of a specific role group, run the following command:

    Get-RoleGroupMember "<Role group name>"
    

    Пример:For example:

    Get-RoleGroupMember "Organization Management"