共用方式為


啟用或停用 Exchange Online Windows PowerShell 的存取

Exchange Online PowerShell 是一種系統管理介面,可讓系統管理員從命令行管理Microsoft 365 組織的 Exchange Online 部分, (包括 Exchange Online Protection 和 中的許多安全性功能適用於 Office 365 的 Microsoft Defender) 。

根據預設,Microsoft 365 中的所有帳戶都可使用 Exchange Online PowerShell。 此存取權不會提供用戶系統管理功能。 它們仍受限於 角色型訪問控制 (RBAC) 。 例如,他們可以在自己的信箱上設定一些設定,並管理他們擁有的通訊群組,但無法管理其他許多設定。

系統管理員可以使用本文中的程式來停用或啟用用戶連線到 Exchange Online PowerShell 的能力。

開始之前有哪些須知?

  • 每項程序的預估完成時間:不到 5 分鐘

  • 本文中的程式僅適用於 Exchange Online PowerShell。 若要連線至 Exchange Online PowerShell,請參閱連線至 Exchange Online PowerShell

  • 您必須獲得指派許可權,才能執行本文中的程式。 您有下列選項:

    • Exchange Online RBAC組織管理收件者管理角色群組中的成員資格。
    • Microsoft Entra RBACExchange 系統管理員全域管理員*角色的成員資格可為使用者提供Microsoft 365 中其他功能的必要許可權許可權。

    重要事項

    在您快速且全域地停用雲端式組織中 PowerShell 存取的哈希中,請注意類似的命令 Get-User | Set-User -EXOModuleEnabled $false ,而不考慮系統管理員帳戶。 使用本文中的程式選擇 性地 移除PowerShell存取權,或在全域移除命令中使用下列語法來 保留需要 PowerShell存取權的存取權: Get-User | Where-Object {$_.UserPrincipalName -ne 'admin1@contoso.onmicrosoft.com' -and $_.UserPrincipalName -ne 'admin2@contoso.onmicrosoft.com'...} | Set-User -EXOModuleEnabled $false

    如果您不小心將自己鎖定在PowerShell存取範圍外,請在 Microsoft 365 系統管理中心 中建立新的系統管理員帳戶,然後使用該帳戶,使用本文中的程式為您自己提供PowerShell存取權。

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

  • 如需 Exchange Online 中 OPATH 篩選語法的詳細資訊,請參閱其他 OPATH 語法資訊

提示

有問題嗎? 在 Exchange 論壇中尋求協助。 請造訪論壇,網址:Exchange OnlineExchange Online Protection

啟用或停用使用者的遠端 PowerShell 存取

此範例會針對使用者停用 Exchange Online PowerShell 的存david@contoso.onmicrosoft.com取權。

Set-User -Identity david@contoso.onmicrosoft.com -EXOModuleEnabled $false

此範例可讓使用者存取 Exchange Online PowerShell。chris@contoso.onmicrosoft.com

Set-User -Identity chris@contoso.onmicrosoft.com -EXOModuleEnabled $true

針對眾多使用者停用遠端 PowerShell 存取

若要防止現有使用者特定群組使用遠端 PowerShell 存取,您可以使用下列選項:

  • 根據現有屬性篩選使用者:此方法假設目標用戶帳戶全都共用唯一的可篩選屬性。 某些屬性 (例如,[標題]、[部門]、[位址資訊] 和 [電話號碼) 只能從 Get-User Cmdlet 取得。 其他屬性 (例如 CustomAttribute1 到 CustomAttribute15) 只能從 Get-Mailbox Cmdlet 取得。
  • 使用特定使用者的清單:產生特定使用者的清單之後,您可以使用該清單來停用其 Exchange Online PowerShell 的存取權。

根據現有的屬性篩選使用者

若要根據現有屬性停用任意數目的使用者存取 Exchange Online PowerShell,請使用下列語法:

$<VariableName> = <Get-Mailbox | Get-User> -ResultSize unlimited -Filter <Filter>

$<VariableName> | foreach {Set-User -Identity $_.WindowsEmailAddress -EXOModuleEnabled $false}

此範例會針對 Title 屬性內含「Sales Associate」值的所有使用者,移除遠端 PowerShell 存取權限。

$DSA = Get-User -ResultSize unlimited -Filter "(RecipientType -eq 'UserMailbox') -and (Title -like 'Sales Associate*')"

$DSA | foreach {Set-User -Identity $_.WindowsEmailAddress -EXOModuleEnabled $false}

使用特定使用者的清單

若要針對特定使用者清單停用遠端 PowerShell 存取,請使用下列語法。

$<VariableName> = Get-Content <text file>

$<VariableName> | foreach {Set-User -Identity $_ -EXOModuleEnabled $false}

下列範例會使用文本檔 C:\My Documents\NoPowerShell.txt,依其帳戶識別使用者。 文字檔每一行必須包含一個帳戶,如下所示:

akol@contoso.onmicrosoft.com
tjohnston@contoso.onmicrosoft.com
kakers@contoso.onmicrosoft.com

在文字檔中填入您想要更新的使用者帳戶之後,請執行下列命令:

$NoPS = Get-Content "C:\My Documents\NoPowerShell.txt"

$NoPS | foreach {Set-User -Identity $_ -EXOModuleEnabled $false}

檢視 Exchange Online 使用者的PowerShell存取狀態

提示

較新的 EXOModuleEnabled 屬性無法與 Get-User Cmdlet 上的 Filter 參數搭配使用,但屬性和舊RemotePowerShellEnabled版屬性的EXOModuleEnabled值一律相同,因此請在 Get-User Cmdlet 上搭配 Filter 參數使用 RemotePowerShellEnabled 屬性。

若要檢視特定使用者的 PowerShell 存取狀態,請以使用者的 UPN) (名稱或使用者主體名稱取代 <UserIdentity> ,然後執行下列命令:

Get-User -Identity "<UserIdentity>" | Format-List EXOModuleEnabled

若要顯示所有使用者 Exchange Online PowerShell 存取狀態,請執行下列命令:

Get-User -ResultSize unlimited | Format-Table -Auto DisplayName,EXOModuleEnabled

若要顯示所有無法存取 powerShell Exchange Online 使用者,請執行下列命令:

Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $false'

若要顯示可存取 Exchange Online PowerShell 的所有使用者,請執行下列命令:

Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $true'