PowerShell を使用して、任意の Exchange または Exchange Online コマンドレットを実行するのに必要なアクセス許可を検索できます。 この手順では、組織にカスタムの役割、カスタムの役割グループ、またはカスタムの役割割り当てがある場合でも、特定のコマンドレットにアクセスできるようにする、役割ベースのアクセス制御 (RBAC) の管理役割と役割グループを示します。
ヒント
現時点では、この記事の手順は、Exchange Online PowerShell の Microsoft 365 グループ コマンドレット (*-UnifiedGroup) では機能しません。
はじめに把握しておくべき情報
この手順の予想所要時間:5 分未満。
これらの手順を実行するには、PowerShell を使用する必要があります。
この記事の手順は、セキュリティ & コンプライアンスの PowerShell では機能しません。 セキュリティ & コンプライアンスのアクセス許可の詳細については、次の記事を参照してください。
この記事の手順を実行する前に、アクセス許可を割り当てる必要があります。 以下のオプションがあります。
Exchange Server のアクセス許可: 次のいずれかの役割グループのメンバーシップ:
- コンプライアンス管理
- 検疫管理
- 組織の管理
- View-Only Organization Management
Exchange Online のアクセス許可: 次のいずれかの役割グループのメンバーシップ:
- コンプライアンス管理
- 委任されたセットアップ
- 検疫管理
- 組織の管理
- View-Only Organization Management
Microsoft Entraアクセス許可: グローバル管理者ロールまたはグローバル閲覧者ロールのメンバーシップにより*必要なアクセス許可と Microsoft 365 の他の機能へのアクセス許可がユーザーに付与されます。
重要
* Microsoft では、最小限のアクセス許可を持つロールを使うことをお勧めします。 アクセス許可の低いアカウントを使用すると、組織のセキュリティが向上します。 グローバル管理者は高い特権を持つロールであり、既存のロールを使用できない場合の緊急時に限定する必要があります。
PowerShell を使用してコマンドレットの実行に必要なアクセス許可を検索する
まだ開いていない場合は、目的の Exchange PowerShell 環境を開きます。
- Exchange Online PowerShell: Exchange Online 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 つのパラメーターを追加し、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 を実行します。