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

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

始める前に把握しておくべき情報

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

  • これらの手順は、PowerShell のみを使用して実行できます。

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

  • この記事の手順は、セキュリティ & コンプライアンス PowerShell またはスタンドアロンの Exchange Online Protection (EOP) PowerShell (Exchange Online メールボックスのない Microsoft 365 組織) では機能しません。 これらの環境でのアクセス許可の詳細については、次の記事を参照してください。

ヒント

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

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

  1. まだ開いていない場合は、目的の Exchange PowerShell 環境を開きます。

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

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

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

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

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

結果の解釈

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

  • ロール: コマンドレットへのアクセス権を付与するロール、またはコマンドレットとパラメーターの組み合わせを示します。 「My」で始まる役割名は正規のユーザーが自分の所有するオブジェクト (たとえば、自分のメールボックスまたは配布グループなど) を操作できるようにするユーザー役割であることに注意してください。

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

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

トラブルシューティング

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

  • コマンドレットとパラメーター名が正しく入力されていることを確認してください。

  • 指定したパラメーターは、1 つのロールのコマンドレットで実際に使用できます。 2 番目のコマンドを実行する前に、最初のコマンドでコマンドレット名のみを指定してみてください。 次に、2 つ目のコマンドを実行する前に、パラメーターを 1 つずつ最初のコマンドに追加します。

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

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

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

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

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

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

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

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

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

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

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します。