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 os cmdlets do Grupo do Microsoft 365 (*-UnifiedGroup) no PowerShell do Exchange Online.
Do que você precisa saber para começar?
Tempo estimado para conclusão do procedimento: menos de cinco minutos.
Só pode utilizar o PowerShell para efetuar estes procedimentos.
Os procedimentos neste artigo não funcionam no PowerShell de Conformidade & de Segurança. Para obter mais informações sobre as permissões de Conformidade do & de Segurança, consulte os seguintes artigos:
Tem de lhe ser atribuídas permissões antes de poder efetuar os procedimentos neste artigo. Você tem as seguintes opções:
Permissões do Exchange Server: associação a um dos seguintes grupos de funções:
- Gerenciamento de Conformidade
- Gerenciamento de Higienização
- Organization Management
- View-Only Organization Management
Permissões do Exchange Online: associação a um dos seguintes grupos de funções:
- Gerenciamento de Conformidade
- Configuração Delegada
- Gerenciamento de Higienização
- Organization Management
- View-Only Organization Management
Permissões do Microsoft Entra: a associação nas funções Administrador* Global ou Leitor Global dá aos utilizadores as permissões e permissões necessárias para outras funcionalidades no Microsoft 365.
Importante
* A Microsoft recomenda que utilize funções com menos permissões. A utilização de contas com permissões mais baixas ajuda a melhorar a segurança da sua organização. O Administrador Global é uma função altamente privilegiada que deve ser limitada a cenários de emergência quando não pode utilizar uma função existente.
Usar o PowerShell para localizar as permissões necessárias para executar um cmdlet
Se ainda não o fez, abra o ambiente do Exchange PowerShell no qual está interessado:
- Exchange Online: ligue ao PowerShell do Exchange Online.
- Proteção do Exchange Online (organizações do Microsoft 365 sem caixas de correio do Exchange Online): Ligue-se ao PowerShell de Proteção do Exchange Online.
- Exchange Server: abra a Shell de Gestão do Exchange ou Ligar a servidores exchange com o PowerShell remoto.
Substitua
<Cmdlet>
e, opcionalmente,<Parameter1>,<Parameter2>,...
pelos valores que pretende utilizar e execute o seguinte comando:$Perms = Get-ManagementRole -Cmdlet <Cmdlet> [-CmdletParameters <Parameter1>,<Parameter2>,...]
Dica
Se especificar vários parâmetros, apenas são devolvidas as funções que incluem todos os parâmetros especificados no cmdlet.
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 cmdlets e parâmetros. Os nomes das funções que começam por "O Meu" são funções de utilizador que permitem que os utilizadores regulares operem em objetos que possuem (por exemplo, a sua própria caixa de correio ou os respetivos grupos de distribuição).
RoleAssigneeType e RoleAssigneeName: estes valores estão inter-relacionados:
- RoleAssigneeType é o tipo de objeto que tem a função atribuída. Para funções de administrador, este valor é normalmente um grupo de funções, mas também pode ser uma política de atribuição de funções, um grupo de segurança ou um utilizador.
- RoleAssigneeName é o nome do grupo de funções, da política de atribuição de funções, do grupo de segurança ou do utilizador.
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 numa única função (alguns parâmetros podem estar numa função, enquanto os outros estão numa função diferente). Dê um passo de cada vez:
- Execute o primeiro comando sem parâmetros e, em seguida, execute o segundo comando.
- Adicione um parâmetro ao primeiro comando e, em seguida, execute o segundo comando.
- Repita o passo anterior ao adicionar outros parâmetros ao primeiro comando antes de executar o segundo comando.
Caso contrário, nenhum resultado é provavelmente causado por uma das seguintes condições:
- Os cmdlets ou parâmetros são definidos numa função que não está atribuída a nenhum grupo de funções por predefinição.
- O cmdlet ou os parâmetros não estão disponíveis no seu ambiente. Por exemplo, especificou um cmdlet do Exchange Online ou parâmetros do Exchange Online num ambiente do Exchange no local.
Para localizar as funções no seu ambiente (se existirem) que contêm o cmdlet ou parâmetros, substitua <Cmdlet>
e, opcionalmente, <Parameter1>,<Parameter2>,...
pelos valores que pretende utilizar e execute o seguinte comando:
Get-ManagementRoleEntry -Identity *\<Cmdlet> [-Parameters <Parameter1>,<Parameter2>,...]
Dica
Pode utilizar carateres universais (*) no cmdlet e nomes de parâmetros (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 devolver resultados, o cmdlet ou os parâmetros estão disponíveis no seu ambiente, mas a função necessária não é atribuída a nenhum grupo de funções. Para localizar funções que não estão atribuídas a grupos de funções, execute o seguinte comando:
$na = Get-ManagementRole; $na | foreach {If ((Get-ManagementRoleAssignment -Role $_.Name -Delegating $false) -eq $null) {$_.Name}}
Procedimentos relacionados
Incluir âmbitos de funções de gestão
Os âmbitos de função de gestão (em particular, âmbitos de escrita) definem onde os cmdlets podem operar. Por exemplo, toda a organização ou apenas em objetos de utilizador específicos.
Para incluir informações de âmbito no comando Utilizar o PowerShell para encontrar 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 âmbitos de funções de gestão, veja Compreender os âmbitos das funções de gestão.
Localizar todas as funções atribuídas a um utilizador específico
Para ver todas as funções atribuídas a um utilizador específico, substitua <UserIdentity>
pelo nome, alias ou endereço de e-mail do utilizador 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 devolve atribuições de funções diretas a utilizadores (invulgares) e atribuições de funções indiretas concedidas ao utilizador através da respetiva associação em grupos de funções.
Localizar todos os utilizadores com uma função específica atribuída
Para ver todos os utilizadores com uma função específica atribuída, 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ções 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
.