啟用或停用 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 RBAC:Exchange 系統管理員或全域管理員*角色的成員資格可為使用者提供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 Online 或 Exchange 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'