启用或禁用对 Exchange Online PowerShell 的访问

Exchange Online PowerShell 是一个管理界面,管理员可以从命令行管理 Microsoft 365 组织的Exchange Online部分 (包括Exchange Online Protection 和 中的许多安全功能Microsoft Defender for Office 365) 。

默认情况下,Microsoft 365 中的所有帐户都可以使用 Exchange Online PowerShell。 此访问权限不会为用户提供组织中的管理功能。 例如,他们仍受 基于角色的访问控制 (RBAC) (的限制,他们可以在自己的邮箱上配置设置或管理自己拥有) 的通讯组。

管理员可以使用本文中的过程来禁用或启用用户连接到 powerShell Exchange Online 的功能。

开始前,有必要了解什么?

  • 估计完成每个步骤时间:少于 5 分钟

  • 本文中的过程仅在 Exchange Online PowerShell 中可用。 若要连接到 Exchange Online PowerShell,请参阅连接到 Exchange Online PowerShell

  • 需要先分配权限,然后才能执行本文中的过程。 可以选择下列选项:

    重要

    在匆忙地在组织中快速全局禁用 PowerShell 访问时,请注意命令(例如 Get-User | Set-User -RemotePowerShellEnabled $false ,无需考虑管理员帐户)。 使用本文中的过程有选择地删除远程 PowerShell 访问,或者通过在全局删除命令中使用以下语法保留需要它的用户的访问权限: Get-User | Where-Object {$_.UserPrincipalName -ne 'admin1@contoso.onmicrosoft.com' -and $_.UserPrincipalName -ne 'admin2@contoso.onmicrosoft.com'...} | Set-User -RemotePowerShellEnabled $false

    如果意外锁定了 PowerShell 访问权限,请在Microsoft 365 管理中心创建新的管理员帐户,然后使用本文中的过程使用该帐户授予自己 PowerShell 访问权限。

  • 有关 Exchange Online 中的 OPATH 筛选器语法的详细信息,请参阅其他 OPATH 语法信息

提示

是否有任何疑问? 在 Exchange 论坛中寻求帮助。 请访问以下论坛:Exchange OnlineExchange Online Protection

为用户启用或禁用远程 PowerShell 访问

本示例禁用对用户 david@contoso.onmicrosoft.comExchange Online PowerShell 的访问。

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

此示例允许访问用户 chris@contoso.onmicrosoft.comExchange Online PowerShell。

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

为多个用户禁用远程 PowerShell 访问

为了防止现有用户的特定组具有远程 PowerShell 访问权限,您可以选择以下选项:

  • 基于现有属性筛选用户:此方法假定目标用户帐户都共享唯一的可筛选属性。 某些特性(如职务、部门、地址信息和电话号码)仅在您使用 Get-User cmdlet 时可见。 其他特性(如 CustomAttribute1-15)仅在您使用 Get-Mailbox cmdlet 时可见。

  • 使用特定用户列表:生成特定用户列表后,可以使用该列表禁用他们对 PowerShell Exchange Online 的访问权限。

基于现有特性筛选用户

若要基于现有属性为任意数量的用户禁用对 Exchange Online PowerShell 的访问,请使用以下语法:

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

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

本示例将为 Title 属性包含"销售人员"这个值的所有用户删除远程 PowerShell 访问。

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

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

使用特定用户的列表

若要为特定用户列表禁用远程 PowerShell 访问,可使用以下语法。

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

$<VariableName> | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $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 $_ -RemotePowerShellEnabled $false}

查看用户的Exchange Online PowerShell 访问状态

若要查看特定用户的 PowerShell 访问状态,请将 UserIdentity> 替换为<用户的名称或用户主体名称 (UPN) ,并运行以下命令:

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

若要显示所有用户Exchange Online PowerShell 访问状态,请运行以下命令:

Get-User -ResultSize unlimited | Format-Table -Auto Name,DisplayName,RemotePowerShellEnabled

若要显示无权访问 Exchange Online PowerShell 的所有用户,请运行以下命令:

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

若要显示有权访问 Exchange Online PowerShell 的所有用户,请运行以下命令:

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