Rechercher les autorisations requises pour exécuter les cmdlets Exchange

Vous pouvez utiliser PowerShell pour rechercher les autorisations requises pour exécuter une cmdlet Exchange ou Exchange Online. Cette procédure décrit les rôles et groupes de rôles de gestion Contrôle d'accès en fonction du rôle (RBAC) qui permettent d'accéder à une cmdlet donnée, même si votre organisation dispose de rôles personnalisés, de groupes de rôles personnalisés ou d'attributions de rôle personnalisées.

Ce qu'il faut savoir avant de commencer

  • Durée estimée de la procédure : moins de 5 minutes.

  • Vous pouvez uniquement utiliser PowerShell pour effectuer ces procédures.

  • Vous devez premièrement être administrateur pour effectuer cette procédure. Plus précisément, vous devez avoir accès aux cmdlets Get-ManagementRole et Get-ManagementRoleAssignment. Par défaut, l’accès à ces applets de commande est accordé par les rôles de configuration en mode affichage uniquement ou de gestion des rôles , qui sont attribués uniquement aux groupes de rôles Gestion de l’organisation en mode seul et Gestion de l’organisation par défaut.

  • Les procédures décrites dans cet article ne fonctionnent pas dans Security & Compliance PowerShell ou Exchange Online Protection (EOP) PowerShell autonome (organisations Microsoft 365 sans boîtes aux lettres Exchange Online). Pour plus d’informations sur les autorisations dans ces environnements, consultez les articles suivants :

Conseil

Vous rencontrez des difficultés ? Demandez de l’aide en participant aux forums Exchange. Visitez les forums à l’adresse suivante : Exchange Server ou Exchange Online.

Utiliser PowerShell pour rechercher les autorisations requises pour exécuter une cmdlet

  1. Si ce n’est pas déjà fait, ouvrez l’environnement Exchange PowerShell qui vous intéresse :

  2. Remplacez <Cmdlet> et éventuellement, <Parameter1>,<Parameter2>,... par les valeurs que vous souhaitez utiliser, puis exécutez la commande suivante :

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

    Remarque : si vous spécifiez plusieurs paramètres, seuls les rôles qui incluent l’applet de commande avec tous les paramètres sont retournés.

  3. Exécutez la commande suivante :

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

Interprétation des résultats

Les résultats contiennent les informations suivantes :

  • Rôle : indique le rôle qui donne accès à l’applet de commande ou à la combinaison de cmdlet et de paramètres. Notez que les rôles dont le nom commence par « My » (« Mon ») sont des rôles utilisateur qui permettent aux utilisateurs réguliers d'effectuer des opérations sur des objets qui leur appartiennent (par exemple, leur boîte aux lettres ou leurs groupes de distribution).

  • RoleAssigneeType et RoleAssigneeName : ces valeurs sont liées entre elles :

    • RoleAssigneeType est le type d’objet auquel le rôle lui est attribué. Pour les rôles d’administrateur, cette valeur est généralement un groupe de rôles, mais il peut également s’agir d’une stratégie d’attribution de rôle, d’un groupe de sécurité ou d’un utilisateur.
    • RoleAssigneeName est le nom du groupe de rôles, de la stratégie d’attribution de rôle, du groupe de sécurité ou de l’utilisateur.

Résolution des problèmes

Que faire si je n’obtiens aucun résultat ?

  • Vérifiez que vous avez correctement entré les noms de cmdlet et de paramètre.

  • Les paramètres que vous avez spécifiés sont en fait disponibles pour une applet de commande dans un rôle unique. Essayez de spécifier uniquement le nom de l’applet de commande dans la première commande avant d’exécuter la deuxième commande. Ensuite, ajoutez les paramètres un par un à la première commande avant d’exécuter la deuxième commande.

Sinon, aucun résultat n’est probablement provoqué par l’une des conditions suivantes :

  • L’applet de commande ou les paramètres sont définis dans un rôle qui n’est attribué par défaut à aucun groupe de rôles.
  • L’applet de commande ou les paramètres ne sont pas disponibles dans votre environnement. Par exemple, vous avez spécifié une applet de commande Exchange Online ou des paramètres Exchange Online dans un environnement Exchange local.

Pour rechercher les rôles dans votre environnement (le cas échéant) qui contiennent l’applet de commande ou les paramètres, remplacez <Cmdlet> et éventuellement, <Parameter1>,<Parameter2>,... par les valeurs que vous souhaitez utiliser et exécutez la commande suivante :

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

Remarque : vous pouvez utiliser des caractères génériques (*) dans l’applet de commande et les noms de paramètres (par exemple, *-Mailbox*).

Si la commande renvoie une erreur indiquant que l'objet est introuvable, la cmdlet ou les paramètres ne sont pas disponibles dans votre environnement.

Si la commande retourne des résultats, l’applet de commande ou les paramètres sont disponibles dans votre environnement, mais le rôle requis n’est attribué à aucun groupe de rôles. Pour rechercher les rôles qui ne sont affectés à aucun groupe de rôles, exécutez la commande suivante :

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

Inclure des étendues de rôle de gestion

Les étendues de rôle de gestion (en particulier les étendues d’écriture) définissent où les applets de commande peuvent fonctionner. Par exemple, l’ensemble de l’organisation ou uniquement sur des objets utilisateur spécifiques.

Pour inclure des informations d’étendue dans l’applet de commande Utiliser PowerShell pour rechercher les autorisations requises pour exécuter une sortie d’applet de commande, ajoutez *Scope* à la deuxième commande :

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

Pour plus d’informations sur les étendues de rôle de gestion, consultez Présentation des étendues de rôle de gestion.

Rechercher tous les rôles attribués à un utilisateur spécifique

Pour afficher tous les rôles attribués à un utilisateur spécifique, remplacez-le <UserIdentity> par le nom, l’alias ou l’adresse e-mail de l’utilisateur et exécutez la commande suivante :

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

Par exemple :

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

Remarque : le paramètre RoleAssignee retourne à la fois des attributions de rôles directes aux utilisateurs (rares) et des attributions de rôles indirectes accordées à l’utilisateur par le biais de leur appartenance à des groupes de rôles.

Rechercher tous les utilisateurs auxquels un rôle spécifique est attribué

Pour voir tous les utilisateurs auxquels un rôle spécifique leur est attribué, remplacez-le <Role name> par le nom du rôle et exécutez la commande suivante :

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

Par exemple :

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

Rechercher les membres d’un groupe de rôles

Pour afficher les membres d’un groupe de rôles spécifique, remplacez-le <Role group name> par le nom du groupe de rôles et exécutez la commande suivante :

Get-RoleGroupMember "<Role group name>"

Par exemple :

Get-RoleGroupMember "Organization Management"

Remarque : pour afficher les noms de tous les groupes de rôles disponibles, exécutezGet-RoleGroup .