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

  • Les procédures de cet article ne fonctionnent pas dans le Centre de sécurité & conformité PowerShell ou dans les organisations Exchange Online Protection autonomes (EOP) PowerShell (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 sur : 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 Exchange environnement PowerShell qui vous intéresse :

  2. Remplacez et éventuellement, par les valeurs que vous souhaitez <Cmdlet> <Parameter1>,<Parameter2>,... 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 la cmdlet avec tous les paramètres sont renvoyé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 à la cmdlet 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 :

    • RoleAssigneeType est le type d’objet dont 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’agit 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 cmdlet dans un seul rôle. Essayez de spécifier uniquement le nom de la cmdlet 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 dû à l’une des conditions suivantes :

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

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

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

Remarque: vous pouvez utiliser des caractères génériques (*) dans les noms de cmdlet 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 renvoie des résultats, la cmdlet ou les paramètres sont disponibles dans votre environnement, mais le rôle requis n’est affecté à aucun groupe de rôles. Pour rechercher des 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 l’endroit où les cmdlets 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’utilisation de PowerShell afin de rechercher les autorisations requises pour exécuter une sortie de cmdlet, ajoutez-la *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 des rôles de gestion, voir Understanding management role scopes.

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

Pour voir tous les rôles attribués à un utilisateur spécifique, remplacez-les par le nom, l’alias ou l’adresse e-mail de l’utilisateur et <UserIdentity> 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 renvoie à la fois des attributions de rôle directes aux utilisateurs (rares) et des attributions de rôle indirectes accordées à l’utilisateur par le biais de son appartenance à des groupes de rôles.

Rechercher tous les utilisateurs affectés à un rôle spécifique

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

Get-RoleGroupMember "<Role group name>"

Par exemple :

Get-RoleGroupMember "Organization Management"

Remarque: pour voir les noms de tous les groupes de rôles disponibles, exécutez Get-RoleGroup .