启用或禁用对 Exchange Online PowerShell 的访问
Exchange Online PowerShell 是一个管理界面,管理员可以从命令行管理 Microsoft 365 组织的 Exchange Online 部分, (包括 Exchange Online Protection 和 Microsoft Defender for Office 365) 中的许多安全功能。
默认情况下,允许 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 访问
此示例禁用对用户的 david@contoso.onmicrosoft.com
Exchange Online PowerShell 的访问。
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 属性包含"销售人员"这个值的所有用户删除远程 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 访问状态
若要查看特定用户的 PowerShell 访问状态,请将 UserIdentity> 替换为<用户的名称或用户主体名称 (UPN) ,并运行以下命令:
Get-User -Identity "<UserIdentity>" | Format-List EXOModuleEnabled
若要显示所有用户的 Exchange Online PowerShell 访问状态,请运行以下命令:
Get-User -ResultSize unlimited | Format-Table -Auto DisplayName,EXOModuleEnabled
若要显示无权访问 Exchange Online PowerShell 的所有用户,请运行以下命令:
Get-User -ResultSize unlimited -Filter 'EXOModuleEnabled -eq $false'
若要显示有权访问 Exchange Online PowerShell 的所有用户,请运行以下命令:
Get-User -ResultSize unlimited -Filter 'EXOModuleEnabled -eq $true'