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.

Conseil

Actuellement, les procédures décrites dans cet article ne fonctionnent pas avec les applets de commande de groupe Microsoft 365 (*-UnifiedGroup) dans Exchange Online PowerShell.

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 Configuration en affichage seul ou Gestion des rôles dans Exchange Online, qui sont attribués uniquement aux groupes de rôles Gestion de l’organisation en affichage seule et Gestion de l’organisation par défaut.

    Dans les organisations basées sur le cloud, l’appartenance au rôle Administrateurs généraux dans Microsoft Entra ID vous donne les autorisations nécessaires.

  • Les procédures décrites dans cet article ne fonctionnent pas dans PowerShell sécurité & conformité. Pour plus d’informations sur les autorisations de sécurité & conformité, consultez les articles suivants :

Conseil

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

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

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

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

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

Conseil

Si vous spécifiez plusieurs paramètres, seuls les rôles qui incluent tous les paramètres spécifiés sur l’applet de commande sont retournés.

  1. 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 l’applet de commande et des paramètres. Les noms de rôles qui commencent par « Mon » sont des rôles d’utilisateur qui permettent aux utilisateurs ordinaires d’utiliser des objets dont ils sont propriétaires (par exemple, leur propre 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.
  • Plusieurs paramètres d’une applet de commande peuvent ne pas être définis dans un seul rôle (certains paramètres peuvent être dans un rôle, tandis que les autres ont un rôle différent). Effectuez une étape à la fois :
    • Exécutez la première commande sans paramètre, puis exécutez la deuxième commande.
    • Ajoutez un paramètre à la première commande, puis exécutez la deuxième commande.
    • Répétez l’étape précédente en ajoutant d’autres paramètres à la première commande avant d’exécuter la deuxième commande.

Sinon, aucun résultat n’est probablement dû à l’une des conditions suivantes :

  • L’applet de commande ou les paramètres sont définis dans un rôle qui n’est affecté à aucun groupe de rôles par défaut.
  • 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 par <Parameter1>,<Parameter2>,... les valeurs que vous souhaitez utiliser et exécutez la commande suivante :

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

Conseil

Vous pouvez utiliser des caractères génériques (*) dans les noms d’applet de commande et de paramètre (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 attribué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 du organization ou uniquement sur des objets utilisateur spécifiques.

Pour inclure des informations d’étendue dans 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 par <UserIdentity> 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

Conseil

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

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

Pour afficher tous les utilisateurs auxquels un rôle spécifique est attribué, remplacez par <Role name> 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 par <Role group name> le nom du groupe de rôles et exécutez la commande suivante :

Get-RoleGroupMember "<Role group name>"

Par exemple :

Get-RoleGroupMember "Organization Management"

Conseil

Pour afficher les noms de tous les groupes de rôles disponibles, exécutez Get-RoleGroup.