尋找執行任何 Exchange 指令程式所需的權限
您可以使用 PowerShell,尋找執行任何 Exchange 或 Exchange Online 指令程式所需的權限。 此程序說明讓您有權存取指定指令程式的角色型存取控制 (RBAC) 管理角色和角色群組 即使您的組織有自訂角色、自訂角色群組或自訂角色指派亦然。
提示
目前,本文中的程式不適用於 Exchange Online PowerShell 中的 Microsoft 365 群組 Cmdlet (*-UnifiedGroup) 。
開始之前有哪些須知?
此程序預估完成時間:少於 5 分鐘。
您只能使用 PowerShell 來執行這些程式。
基本上,您必須是系統管理員才能完成此程序。 特別是,您需要 Get-ManagementRole 和 Get-ManagementRoleAssignment 指令程式的存取權。 根據預設,這些 Cmdlet 的存取權是由 Exchange Online 中的僅限檢視組態或角色管理角色授與,這些角色預設只會指派給僅限檢視組織管理和組織管理角色群組。
在雲端式組織中,Microsoft Entra標識符中全域管理員角色的成員資格會提供您必要的許可權。
本文中的程式無法在安全性 & 合規性 PowerShell 中運作。 如需安全性 & 合規性許可權的詳細資訊,請參閱下列文章:
提示
有問題嗎? 在 Exchange 論壇中尋求協助。 請造訪論壇,網 Exchange Server 或 Exchange Online。
使用 PowerShell 尋找執行指令程式所需的權限
如果您尚未這麼做,請開啟您感興趣的 Exchange PowerShell 環境:
- Exchange Online:連線到 Exchange Online PowerShell。
- Exchange Online Protection (沒有 Exchange Online 信箱的 Microsoft 365 組織) :連線到 Exchange Online Protection PowerShell。
- Exchange Server:使用遠端 PowerShell 開啟 Exchange 管理命令介面或連線到 Exchange 伺服器。
選擇性地
<Parameter1>,<Parameter2>,...
以您要使用的值取代<Cmdlet>
和 ,然後執行下列命令:$Perms = Get-ManagementRole -Cmdlet <Cmdlet> [-CmdletParameters <Parameter1>,<Parameter2>,...]
提示
如果您指定多個參數,則只會傳回 Cmdlet 上包含 所有 指定參數的角色。
執行下列命令:
$Perms | foreach {Get-ManagementRoleAssignment -Role $_.Name -Delegating $false | Format-Table -Auto Role,RoleAssigneeType,RoleAssigneeName}
解譯結果
結果包含下列資訊:
角色:指出可存取 Cmdlet 的角色,或 Cmdlet 和參數的組合。 以 「My」 開頭的角色名稱是使用者角色,可讓一般使用者在自己的 (物件上操作,例如,他們自己的信箱或其通訊群組) 。
RoleAssigneeType 和 RoleAssigneeName:這些值是相互關聯的:
- RoleAssigneeType 是已指派角色的物件類型。 對於系統管理員角色,此值通常是角色群組,但也可以是角色指派原則、安全組或使用者。
- RoleAssigneeName 是角色群組、角色指派原則、安全組或用戶的名稱。
疑難排解
如果沒有結果該如何處理?
- 確認您輸入的指令程式和參數名稱是正確的。
- Cmdlet 的多個參數可能不會定義在單一角色中 (某些參數可能在一個角色中,而其他參數則位於不同的角色) 。 一次執行一個步驟:
- 執行第一個沒有參數的命令,然後執行第二個命令。
- 將一個參數新增至第一個命令,然後執行第二個命令。
- 執行第二個命令之前,請先將其他參數新增至第一個命令,以重複上一個步驟。
否則,下列其中一個條件可能不會造成任何結果:
- Cmdlet 或參數是在預設未指派給任何角色群組的角色中定義。
- 您的環境中無法使用 Cmdlet 或參數。 例如,您在內部部署 Exchange 環境中指定了 Exchange Online Cmdlet 或 Exchange Online 參數。
若要在環境中尋找角色, (包含 Cmdlet 或參數的任何) ,請選擇性地<Parameter1>,<Parameter2>,...
以您要使用的值取代 <Cmdlet>
和 ,然後執行下列命令:
Get-ManagementRoleEntry -Identity *\<Cmdlet> [-Parameters <Parameter1>,<Parameter2>,...]
提示
您可以在 Cmdlet 和參數名稱中使用通配符 (*) ,例如 *-Mailbox*
,) (。
如果命令傳回錯誤指出找不到物件,表示指令程式或參數無法在您的環境中使用。
如果命令傳回結果,則 Cmdlet 或參數可在您的環境中使用,但不會將必要的角色指派給任何角色群組。 若要尋找未指派給任何角色群組的角色,請執行下列命令:
$na = Get-ManagementRole; $na | foreach {If ((Get-ManagementRoleAssignment -Role $_.Name -Delegating $false) -eq $null) {$_.Name}}
相關程序
包含管理角色範圍
特別是 (管理角色範圍,寫入範圍) 定義 Cmdlet 的運作位置。 例如,整個組織或僅限特定用戶物件。
若 要在使用 PowerShell 尋找執行 Cmdlet 輸出所需的 許可權中包含範圍資訊,請將 新 *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
。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應