Exchange コマンドレットを実行するために必要なアクセス許可を検索する
PowerShell を使用して、任意の Exchange または Exchange Online コマンドレットを実行するのに必要なアクセス許可を検索できます。 この手順では、組織にカスタムの役割、カスタムの役割グループ、またはカスタムの役割割り当てがある場合でも、特定のコマンドレットにアクセスできるようにする、役割ベースのアクセス制御 (RBAC) の管理役割と役割グループを示します。
ヒント
現時点では、この記事の手順は、Exchange Online PowerShell の Microsoft 365 グループ コマンドレット (*-UnifiedGroup) では機能しません。
はじめに把握しておくべき情報
この手順の予想所要時間:5 分未満。
PowerShell を使用してこれらの手順を実行することしかできません。
この記事の手順は、Security & Compliance PowerShell では機能しません。 セキュリティ & コンプライアンスアクセス許可の詳細については、次の記事を参照してください。
この記事の手順を実行する前に、アクセス許可を割り当てる必要があります。 以下のオプションがあります。
Exchange Server のアクセス許可: 次のいずれかの役割グループのメンバーシップ:
- コンプライアンス管理
- 検疫管理
- 組織の管理
- View-Only Organization Management
Exchange Online のアクセス許可: 次のいずれかの役割グループのメンバーシップ。
- コンプライアンス管理
- 委任されたセットアップ
- 検疫管理
- 組織の管理
- View-Only Organization Management
Microsoft Entra のアクセス許可: グローバル管理者ロール*またはグローバル 閲覧者ロールのメンバーシップは、Microsoft 365 の他の機能に必要なアクセス許可とアクセス許可をユーザーに付与します。
重要
* Microsoft では、アクセス許可が最も少ないロールを使用することをお勧めします。 アクセス許可の低いアカウントを使用すると、組織のセキュリティが向上します。 グローバル管理者は高い特権を持つロールであり、既存のロールを使用できない場合の緊急シナリオに限定する必要があります。
PowerShell を使用してコマンドレットの実行に必要なアクセス許可を検索する
関心のある Exchange PowerShell 環境をまだ開いていない場合は、次のように開きます。
- Exchange Online: Exchange Online PowerShell に接続します。
- Exchange Online Protection (Exchange Online メールボックスのない Microsoft 365 組織): Exchange Online Protection PowerShell に接続します。
- Exchange Server: Exchange 管理シェルを開くか 、 リモート PowerShell を使用して Exchange サーバーに接続します。
<Cmdlet>
を置き換え、必要に応じて、<Parameter1>,<Parameter2>,...
を使用する値に置き換え、次のコマンドを実行します。$Perms = Get-ManagementRole -Cmdlet <Cmdlet> [-CmdletParameters <Parameter1>,<Parameter2>,...]
ヒント
複数のパラメーターを指定すると、コマンドレットに指定 されたすべての パラメーターを含むロールのみが返されます。
次のコマンドを実行します。
$Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-Table -Auto Role,RoleAssigneeType,RoleAssigneeName}
結果の解釈
結果には次の情報が含まれます。
ロール: コマンドレットへのアクセスを許可するロール、またはコマンドレットとパラメーターの組み合わせを示します。 "My" で始まるロール名は、通常のユーザーが所有するオブジェクト (自分のメールボックスや配布グループなど) で操作できるようにするユーザー ロールです。
RoleAssigneeType と RoleAssigneeName: これらの値は相互に関連しています。
- 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}}
関連する手順
管理ロールスコープを含める
管理ロール スコープ (特に、書き込みスコープ) は、コマンドレットを操作できる場所を定義します。 たとえば、組織全体、または特定のユーザー オブジェクトに対してのみです。
[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
を実行します。