Encontrar as permissões necessárias para executar qualquer Exchange cmdlet

Você pode usar o PowerShell para localizar as permissões necessárias para executar qualquer cmdlet do Exchange ou do Exchange Online. Este procedimento mostra as funções de gerenciamento de RBAC (controle de acesso baseado em função) e os grupos de função que lhe fornecem acesso a um cmdlet específico, mesmo que sua organização tenha funções personalizadas, grupos de funções personalizados ou atribuições de função personalizadas.

Dica

Atualmente, os procedimentos neste artigo não funcionam com cmdlets do Grupo do Microsoft 365 (*-UnifiedGroup) no Exchange Online PowerShell.

Do que você precisa saber para começar?

  • Tempo estimado para conclusão do procedimento: menos de cinco minutos.

  • Você só pode usar o PowerShell para executar esses procedimentos.

  • Basicamente, você precisa ser um administrador para concluir este procedimento. Especificamente, você precisa de acesso aos cmdlets Get-ManagementRole e Get-ManagementRoleAssignment. Por padrão, o acesso a esses cmdlets é concedido pelas funções de Configuração somente exibição ou gerenciamento de função em Exchange Online, que são atribuídas apenas aos grupos de funções Gerenciamento de Organização e Gerenciamento de Organização somente exibição por padrão.

    Em organizações baseadas em nuvem, a associação à função Administradores Globais em Microsoft Entra ID fornece as permissões necessárias.

  • Os procedimentos neste artigo não funcionam no PowerShell de Conformidade do & de Segurança. Para obter mais informações sobre as permissões de conformidade & segurança, confira os seguintes artigos:

Dica

Está com problemas? Peça ajuda nos fóruns do Exchange. Visite os fóruns em: Exchange Server ou Exchange Online.

Usar o PowerShell para localizar as permissões necessárias para executar um cmdlet

  1. Se você ainda não tiver, abra o ambiente do Exchange PowerShell no qual está interessado:

  2. Substitua <Cmdlet> e, opcionalmente, <Parameter1>,<Parameter2>,... pelos valores que você deseja usar e execute o seguinte comando:

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

Dica

Se você especificar vários parâmetros, somente as funções que incluem todos os parâmetros especificados no cmdlet serão retornadas.

  1. Execute o seguinte comando:

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

Interpretando os resultados

Os resultados contêm as seguintes informações:

  • Função: indica a função que dá acesso ao cmdlet ou à combinação de cmdlet e parâmetros. Nomes de função que começam com "My" são funções de usuário que permitem que usuários regulares operem em objetos que possuem (por exemplo, sua própria caixa de correio ou seus grupos de distribuição).

  • RoleAssigneeType e RoleAssigneeName: esses valores estão inter-relacionados:

    • RoleAssigneeType é o tipo de objeto que tem a função atribuída a ele. Para funções de administrador, esse valor normalmente é um grupo de funções, mas também pode ser uma política de atribuição de função, um grupo de segurança ou um usuário.
    • RoleAssigneeName é o nome do grupo de funções, da política de atribuição de função, do grupo de segurança ou do usuário.

Solução de problemas

E se não houver resultados?

  • Verifique se os nomes de cmdlets e parâmetros foram inseridos corretamente.
  • Vários parâmetros para um cmdlet podem não ser definidos em uma única função (alguns parâmetros podem estar em uma função, enquanto os outros estão em uma função diferente). Dê uma etapa de cada vez:
    • Execute o primeiro comando sem parâmetros e execute o segundo comando.
    • Adicione um parâmetro ao primeiro comando e execute o segundo comando.
    • Repita a etapa anterior adicionando outros parâmetros ao primeiro comando antes de executar o segundo comando.

Caso contrário, nenhum resultado provavelmente será causado por uma das seguintes condições:

  • O cmdlet ou os parâmetros são definidos em uma função que não é atribuída a nenhum grupo de funções por padrão.
  • O cmdlet ou os parâmetros não estão disponíveis em seu ambiente. Por exemplo, você especificou um cmdlet Exchange Online ou parâmetros Exchange Online em um ambiente local do Exchange.

Para localizar as funções em seu ambiente (se houver) que contêm o cmdlet ou parâmetros, substitua <Cmdlet> e opcionalmente, <Parameter1>,<Parameter2>,... pelos valores que você deseja usar e execute o seguinte comando:

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

Dica

Você pode usar caracteres curinga (*) no cmdlet e nomes de parâmetro (por exemplo, *-Mailbox*).

Se o comando retornar um erro dizendo que o objeto não foi encontrado, o cmdlet ou os parâmetros não estão disponíveis em seu ambiente.

Se o comando retornar resultados, o cmdlet ou os parâmetros estarão disponíveis em seu ambiente, mas a função necessária não será atribuída a nenhum grupo de funções. Para localizar funções que não são atribuídas a nenhum grupo de funções, execute o seguinte comando:

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

Incluir escopos de função de gerenciamento

Escopos de função de gerenciamento (em particular, escopos de gravação) definem onde os cmdlets podem operar. Por exemplo, toda a organização ou apenas em objetos de usuário específicos.

Para incluir informações de escopo no Use PowerShell para localizar as permissões necessárias para executar uma saída de cmdlet , adicione *Scope* ao segundo comando:

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

Para obter informações detalhadas sobre escopos de função de gerenciamento, consulte Noções básicas sobre escopos de função de gerenciamento.

Localizar todas as funções atribuídas a um usuário específico

Para ver todas as funções atribuídas a um usuário específico, substitua <UserIdentity> pelo nome, alias ou endereço de email do usuário e execute o seguinte comando:

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

Por exemplo:

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

Dica

O parâmetro RoleAssignee retorna atribuições de função diretas para usuários (incomuns) e atribuições de função indireta concedidas ao usuário por meio de sua associação em grupos de funções.

Localizar todos os usuários que têm uma função específica atribuída

Para ver todos os usuários que têm uma função específica atribuída a eles, substitua <Role name> pelo nome da função e execute o seguinte comando:

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

Por exemplo:

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

Localizar os membros de um grupo de funções

Para ver os membros de um grupo de função específico, substitua <Role group name> pelo nome do grupo de funções e execute o seguinte comando:

Get-RoleGroupMember "<Role group name>"

Por exemplo:

Get-RoleGroupMember "Organization Management"

Dica

Para ver os nomes de todos os grupos de funções disponíveis, execute Get-RoleGroup.