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

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

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

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

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

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

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

ヒント

問題がある場合は、 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 パラメーターを指定したとします。

コマンドレットまたはパラメーターを含む環境内のロール (存在する場合) を見つけるには、 と を使用する値に置き換え <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}}

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

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

[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