Exchange コマンドレットを実行するために必要なアクセス許可を検索する

PowerShell を使用して、任意の Exchange または Exchange Online コマンドレットを実行するのに必要なアクセス許可を検索できます。 この手順では、組織にカスタムの役割、カスタムの役割グループ、またはカスタムの役割割り当てがある場合でも、特定のコマンドレットにアクセスできるようにする、役割ベースのアクセス制御 (RBAC) の管理役割と役割グループを示します。

ヒント

現時点では、この記事の手順は、PowerShell の Microsoft 365 グループ コマンドレット (*-UnifiedGroup) では機能Exchange Online。

はじめに把握しておくべき情報

  • この手順の予想所要時間:5 分未満。

  • PowerShell を使用してこれらの手順を実行することしかできません。

  • 基本的に、この手順を完了するには管理者である必要があります。 具体的には、 Get-ManagementRole コマンドレットと Get-ManagementRoleAssignment コマンドレットにアクセスする必要があります。 既定では、これらのコマンドレットへのアクセスは、Exchange Onlineの表示専用構成ロールまたはロール管理ロールによって付与されます。これは、既定で表示専用の組織管理ロール グループと組織管理ロール グループにのみ割り当てられます。

    クラウドベースの組織では、Microsoft Entra ID のグローバル管理者ロールのメンバーシップによって、必要なアクセス許可が付与されます。

  • この記事の手順は、Security & Compliance PowerShell では機能しません。 セキュリティ & コンプライアンスアクセス許可の詳細については、次の記事を参照してください。

ヒント

問題がある場合は、 Exchange のフォーラムで質問してください。 Exchange ServerまたはExchange Onlineのフォーラムにアクセスします。

PowerShell を使用してコマンドレットの実行に必要なアクセス許可を検索する

  1. 関心のある Exchange PowerShell 環境をまだ開いていない場合は、次のように開きます。

  2. と を必要に応じて、<Parameter1>,<Parameter2>,...使用する値に置き換えて<Cmdlet>、次のコマンドを実行します。

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

ヒント

複数のパラメーターを指定すると、コマンドレットに指定 されたすべての パラメーターを含むロールのみが返されます。

  1. 次のコマンドを実行します。

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

結果の解釈

結果には次の情報が含まれます。

  • ロール: コマンドレットへのアクセスを許可するロール、またはコマンドレットとパラメーターの組み合わせを示します。 "My" で始まるロール名は、通常のユーザーが所有するオブジェクト (自分のメールボックスや配布グループなど) で操作できるようにするユーザー ロールです。

  • RoleAssigneeTypeRoleAssigneeName: これらの値は相互に関連しています。

    • RoleAssigneeType は、ロールが割り当てられているオブジェクトの種類です。 管理者ロールの場合、この値は通常ロール グループですが、ロールの割り当てポリシー、セキュリティ グループ、またはユーザーの場合もあります。
    • RoleAssigneeName は、ロール グループ、ロール割り当てポリシー、セキュリティ グループ、またはユーザーの名前です。

トラブルシューティング

結果が存在しない場合の対応

  • コマンドレットとパラメーター名が正しく入力されていることを確認してください。
  • コマンドレットの複数のパラメーターが 1 つのロールで定義されていない場合があります (一部のパラメーターは 1 つのロールに、他のパラメーターは別のロールにあります)。 一度に 1 つの手順を実行します。
    • パラメーターなしで最初のコマンドを実行し、2 番目のコマンドを実行します。
    • 1 つ目のコマンドに 1 つのパラメーターを追加し、2 番目のコマンドを実行します。
    • 2 番目のコマンドを実行する前に、最初のコマンドに他のパラメーターを追加して、前の手順を繰り返します。

それ以外の場合は、次のいずれかの条件が原因で結果が発生しない可能性があります。

  • コマンドレットまたはパラメーターは、既定ではロール グループに割り当てられないロールで定義されます。
  • コマンドレットまたはパラメーターは、環境内では使用できません。 たとえば、オンプレミスの Exchange 環境で Exchange Online コマンドレットまたは Exchange Online パラメーターを指定したとします。

コマンドレットまたはパラメーターを含む環境内のロール (存在する場合) を見つけるには、 と を使用する値に置き換え <Cmdlet><Parameter1>,<Parameter2>,... 必要に応じて次のコマンドを実行します。

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

ヒント

コマンドレットとパラメーター名 (例: ) では、 *-Mailbox*ワイルドカード文字 (*) を使用できます。

オブジェクトが見つからなかったというエラーが返された場合、コマンドレットまたはパラメーターは環境で使用できません。

コマンドが結果を返す場合、コマンドレットまたはパラメーターは環境内で使用できますが、必要なロールはどの役割グループにも割り当てられません。 ロール グループに割り当てられていないロールを見つけるには、次のコマンドを実行します。

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

管理ロールスコープを含める

管理ロール スコープ (特に、書き込みスコープ) は、コマンドレットを操作できる場所を定義します。 たとえば、organization全体、または特定のユーザー オブジェクトに対してのみです。

[PowerShell を使用してコマンドレットの出力を実行するために必要なアクセス許可を検索する] にスコープ情報を含めるには、2 番目のコマンドにを追加*Scope*します。

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

管理ロールスコープの詳細については、「 管理ロールのスコープについて」を参照してください。

特定のユーザーに割り当てられているすべてのロールを検索する

特定のユーザーに割り当てられているすべてのロールを表示するには、ユーザーの名前、エイリアス、または電子メール アドレスに置き換えて <UserIdentity> 、次のコマンドを実行します。

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

例:

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

ヒント

RoleAssignee パラメーターは、ユーザーへの直接ロールの割り当て (一般的でない) と、ロール グループのメンバーシップを通じてユーザーに付与された間接ロールの割り当ての両方を返します。

特定のロールが割り当てられているすべてのユーザーを検索する

特定のロールが割り当てられているすべてのユーザーを表示するには、ロールの名前に置き換えて <Role name> 、次のコマンドを実行します。

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

例:

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

役割グループのメンバーを検索する

特定の役割グループのメンバーを表示するには、 を役割グループの名前に置き換え <Role group name> 、次のコマンドを実行します。

Get-RoleGroupMember "<Role group name>"

例:

Get-RoleGroupMember "Organization Management"

ヒント

使用可能なすべての役割グループの名前を表示するには、 を実行します Get-RoleGroup