尋找執行任何 Exchange 指令程式所需的權限

您可以使用 PowerShell,尋找執行任何 Exchange 或 Exchange Online 指令程式所需的權限。 此程序說明讓您有權存取指定指令程式的角色型存取控制 (RBAC) 管理角色和角色群組 — 即使您的組織有自訂角色、自訂角色群組或自訂角色指派亦然。

提示

目前,本文中的程序不適用於 Exchange Online PowerShell 中的 Microsoft 365 群組 Cmdlet (*-UnifiedGroup) 。

開始之前有哪些須知?

  • 此程序預估完成時間:少於 5 分鐘。

  • 您只能使用 PowerShell 來執行這些程序。

  • 本文中的程序無法在安全性 & 合規性 PowerShell 中使用。 如需安全性 & 合規性權限的詳細資訊,請參閱下列文章:

  • 您必須已獲派權限,才能進行本文中的程序。 您有下列選項:

    • Exchange Server 權限:下列其中一個角色群組的成員資格:

      • 規範管理
      • 檢疫管理
      • Organization Management
      • View-Only Organization Management
    • Exchange Online 權限: 下列其中一個角色群組的成員資格:

      • 規範管理
      • 委派安裝
      • 檢疫管理
      • Organization Management
      • View-Only Organization Management
    • Microsoft Entra 權限:全域系統管理員*或全域讀取者角色的成員資格可給予使用者必要的權限以及 Microsoft 365 中其他功能的權限。

      重要事項

      *Microsoft 建議您使用權限最少的角色。 使用較低權限的帳戶有助於提高組織的安全性。 全域系統管理員是高度特殊權限角色,應僅在無法使用現有角色的緊急案例下使用。

使用 PowerShell 尋找執行指令程式所需的權限

  1. 如果您尚未開啟感興趣的 Exchange PowerShell 環境,請開啟:

  2. <Cmdlet>選擇性地<Parameter1>,<Parameter2>,...將 和 取代為您想要使用的值,然後執行下列命令:

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

    提示

    如果您指定多個參數,則只會傳回包含 Cmdlet 上 所有 指定參數的角色。

  3. 執行下列命令:

    $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 或參數的) ,請以您想要使用的值取代 <Cmdlet> 和 選擇性, <Parameter1>,<Parameter2>,... 然後執行下列命令:

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。