Buscar los permisos necesarios para ejecutar cualquier cmdlet de Exchange

Puede usar PowerShell para buscar los permisos necesarios para ejecutar cualquier cmdlet de Exchange o Exchange Online. En este procedimiento se muestran los grupos de roles y los roles de administración de control de acceso basado en roles que proporcionan acceso a un cmdlet especificado, aunque la organización tenga roles personalizados, grupos de roles personalizados o asignaciones de roles personalizados.

Sugerencia

Actualmente, los procedimientos de este artículo no funcionan con cmdlets de grupo de Microsoft 365 (*-UnifiedGroup) en Exchange Online PowerShell.

¿Qué necesita saber antes de empezar?

  • Tiempo estimado para finalizar este procedimiento: menos de 5 minutos.

  • Solo puede usar PowerShell para realizar estos procedimientos.

  • Los procedimientos de este artículo no funcionan en PowerShell de cumplimiento de seguridad &. Para obtener más información sobre los permisos de cumplimiento de & de seguridad, consulte los artículos siguientes:

  • Debe tener asignados permisos para poder realizar los procedimientos de este artículo. Tiene las siguientes opciones:

    • Permisos de Exchange Server: pertenencia a uno de los siguientes grupos de roles:

      • Administración de cumplimiento
      • Administración de higiene
      • Organization Management
      • View-Only Organization Management
    • Permisos de Exchange Online: pertenencia a uno de los siguientes grupos de roles:

      • Administración de cumplimiento
      • Configuración delegada
      • Administración de higiene
      • Organization Management
      • View-Only Organization Management
    • Permisos de Microsoft Entra: la pertenencia a los roles de administrador*global o lector global proporciona a los usuarios los permisos y permisos necesarios para otras características de Microsoft 365.

      Importante

      * Microsoft recomienda usar roles con los permisos más mínimos. El uso de cuentas con permisos inferiores ayuda a mejorar la seguridad de su organización. Administrador global es un rol con privilegios elevados que debe limitarse a escenarios de emergencia cuando no se puede usar un rol existente.

Uso de PowerShell para buscar los permisos necesarios para ejecutar un cmdlet

  1. Si aún no lo ha hecho, abra el entorno de Exchange PowerShell que le interesa:

  2. Reemplace <Cmdlet> y, opcionalmente, <Parameter1>,<Parameter2>,... por los valores que desea usar y ejecute el siguiente comando:

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

    Sugerencia

    Si especifica varios parámetros, solo se devuelven los roles que incluyen todos los parámetros especificados en el cmdlet.

  3. Ejecute el siguiente comando:

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

Interpretación de los resultados

Los resultados contienen la siguiente información:

  • Rol: indica el rol que proporciona acceso al cmdlet o a la combinación de cmdlets y parámetros. Los nombres de rol que comienzan por "Mi" son roles de usuario que permiten a los usuarios normales operar en objetos de su propiedad (por ejemplo, su propio buzón o sus grupos de distribución).

  • RoleAssigneeType y RoleAssigneeName: estos valores están relacionados entre sí:

    • RoleAssigneeType es el tipo de objeto que tiene el rol asignado. En el caso de los roles de administrador, este valor suele ser un grupo de roles, pero también puede ser una directiva de asignación de roles, un grupo de seguridad o un usuario.
    • RoleAssigneeName es el nombre del grupo de roles, la directiva de asignación de roles, el grupo de seguridad o el usuario.

Solución de problemas

¿Qué sucede si no se obtiene ningún resultado?

  • Compruebe que ha especificado correctamente los nombres de cmdlet y de los parámetros.
  • Es posible que varios parámetros de un cmdlet no se definan en un solo rol (algunos parámetros pueden estar en un rol, mientras que los demás están en un rol diferente). Tómelo paso a paso:
    • Ejecute el primer comando sin parámetros y, a continuación, ejecute el segundo comando.
    • Agregue un parámetro al primer comando y, a continuación, ejecute el segundo comando.
    • Repita el paso anterior agregando otros parámetros al primer comando antes de ejecutar el segundo comando.

De lo contrario, es probable que ninguno de los resultados se deba a una de las condiciones siguientes:

  • El cmdlet o los parámetros se definen en un rol que no está asignado a ningún grupo de roles de forma predeterminada.
  • El cmdlet o los parámetros no están disponibles en el entorno. Por ejemplo, especificó un cmdlet de Exchange Online o parámetros de Exchange Online en un entorno de Exchange local.

Para buscar los roles del entorno (si los hay) que contienen el cmdlet o los parámetros, reemplace <Cmdlet> y, opcionalmente, <Parameter1>,<Parameter2>,... por los valores que desea usar y ejecute el siguiente comando:

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

Sugerencia

Puede usar caracteres comodín (*) en los nombres de cmdlet y parámetro (por ejemplo, *-Mailbox*).

Si el comando devuelve un error que indica que no se pudo encontrar el objeto, significa que el cmdlet o los parámetros no están disponibles en el entorno.

Si el comando devuelve resultados, el cmdlet o los parámetros están disponibles en su entorno, pero el rol necesario no se asigna a ningún grupo de roles. Para buscar roles que no están asignados a ningún grupo de roles, ejecute el siguiente comando:

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

Incluir ámbitos de rol de administración

Los ámbitos de rol de administración (en concreto, ámbitos de escritura) definen dónde pueden funcionar los cmdlets. Por ejemplo, toda la organización o solo en objetos de usuario específicos.

Para incluir información de ámbito en Usar PowerShell para buscar los permisos necesarios para ejecutar una salida de cmdlet, agregue *Scope* al segundo comando:

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

Para obtener información detallada sobre los ámbitos de roles de administración, consulte Descripción de los ámbitos de rol de administración.

Buscar todos los roles asignados a un usuario específico

Para ver todos los roles asignados a un usuario específico, reemplace por <UserIdentity> el nombre, el alias o la dirección de correo electrónico del usuario y ejecute el siguiente comando:

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

Por ejemplo:

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

Sugerencia

El parámetro RoleAssignee devuelve tanto asignaciones de roles directas a usuarios (poco comunes) como asignaciones de roles indirectos concedidas al usuario a través de su pertenencia a grupos de roles.

Buscar todos los usuarios que tengan asignado un rol específico

Para ver todos los usuarios que tienen asignado un rol específico, reemplace por <Role name> el nombre del rol y ejecute el siguiente comando:

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

Por ejemplo:

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

Búsqueda de los miembros de un grupo de roles

Para ver los miembros de un grupo de roles específico, reemplace por <Role group name> el nombre del grupo de roles y ejecute el siguiente comando:

Get-RoleGroupMember "<Role group name>"

Por ejemplo:

Get-RoleGroupMember "Organization Management"

Sugerencia

Para ver los nombres de todos los grupos de roles disponibles, ejecute Get-RoleGroup.