V1 模块 - 使用 MFA 连接到 Exchange Online PowerShell

备注

本主题中所述的旧版 Exchange Online 远程 PowerShell 模块最终将停用。 Exchange Online PowerShell V2 模块 (EXO V2 模块) MFA,因此我们建议改为使用 MFA。 有关说明,请参阅连接 PowerShell Exchange Online

如果要使用多重身份验证 (MFA) 连接到 Exchange Online PowerShell,则不能按照基本身份验证 - 连接到 Exchange Online PowerShell 以使用远程 PowerShell 连接到 Exchange Online 的说明。 MFA 要求您安装 Exchange Online 远程 PowerShell 模块,并使用 Connect-EXOPSSession cmdlet 进行连接。

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

  • 估计完成时间:5 分钟

  • 可以使用下列 Windows 版本:

    • Windows 10
    • Windows 8.1
    • Windows Server 2019
    • Windows Server 2016
    • Windows Server 2012 或 Windows Server 2012 R2
    • Windows 7 Service Pack 1 (SP1)*
    • Windows Server 2008 R2 SP1*

    *此版本的 Windows 已进入终止支持阶段,现在只有在 Azure 虚拟机中运行时才能得到支持。 若要使用此版本 Windows,必须先安装 Microsoft .NET Framework 4.5 或更高版本,然后再安装更新版本的 Windows Management Framework:3.0、4.0 或 5.1(仅限一个)。 有关更多信息,请参阅安装 .NET Framework Windows Management Framework 3.0Windows Management Framework 4.0Windows Management Framework 5.1

  • WinRM 需要允许使用基本身份验证(默认情况下已启用)。 我们不会发送用户名和密码组合,但需要基本身份验证标头来发送会话的 OAuth 令牌,因为客户端 WinRM 实现不支持 OAuth。

    请注意:必须暂时启用 WinRM 才能运行以下命令。 可运行 winrm quickconfig 命令来启用它。

    若要验证是否已为 WinRM 启用基本身份验证,请 在命令提示符中(不是在 Windows PowerShell 中)运行此命令:

    winrm get winrm/config/client/auth
    

    如果未看到值 Basic = true,则需要 在命令提示符中(不是在 Windows PowerShell 中)运行此命令来启用 WinRM 的基本身份验证:

    winrm set winrm/config/client/auth @{Basic="true"}
    

    请注意:如果要在 Windows PowerShell 中运行命令,请将命令的 '@{Basic="true"}' 部分用括号括起来。

    如果 WinRM 的基本身份验证处于禁用状态,则当你尝试连接时会收到此错误:

    WinRM 客户端无法处理该请求。 客户端配置中当前已禁用基本身份验证。 更改客户端配置,然后重试请求。

安装 Exchange Online 远程 PowerShell 模块

备注

PowerShell Core 不支持 Exchange Online 远程 PowerShell 模块 (macOS、Linux 或 Windows Nano Server) 。 作为一种解决方法,可以在运行受支持版本的 Windows (物理或虚拟) 计算机上安装模块,并使用远程桌面软件进行连接。

您需要在支持以下各项的浏览器中执行以下步骤ClickOnce (例如,Internet Explorer或 Edge) :

注意:ClickOnce在基于 Chromium 的 Edge 版本中提供edge://flags/#edge-click-once,并且默认情况下可能不会启用。

  1. 打开 Exchange Online (EAC) Exchange 管理中心。 有关说明,请参阅 Exchange Online 中的 Exchange 管理中心

  2. 在 EAC 中,转到 "混合 设置"并单击相应的"配置"按钮 > 以下载 Exchange Online 远程 PowerShell 模块进行多重身份验证。

    从 EAC 中的"混合"选项卡下载 Exchange Online PowerShell 模块

  3. 在打开的“应用程序安装”窗口中,单击“安装”。

    单击"在 Exchange Online PowerShell 模块"窗口中安装

  • 使用 Exchange Online 远程 PowerShell 模块时,会话将在一小时后结束,这对于长时间运行的脚本或进程可能存在问题。 若要避免此问题,请使用受信任的 IP 绕过来自 Intranet 的连接的 MFA。 受信任的 IP 允许你使用基本身份验证中的旧说明从 Intranet 连接到 Exchange Online PowerShell - 连接到 Exchange Online PowerShell。 此外,如果数据中心有服务器,请确保将公用 IP 地址添加到受信任的 IP,如此处 所述

提示

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

使用 MFA 连接到 Exchange Online PowerShell

  1. 在本地计算机上,打开 Microsoft Corporation (远程 PowerShell 模块Microsoft Exchange Online > 远程 PowerShell 模块) 。

  2. 需要运行的命令使用以下语法:

    Connect-EXOPSSession [-UserPrincipalName -ConnectionUri <ConnectionUri> -AzureADAuthorizationEndPointUri <AzureADUri> -DelegatedOrganization <String>]
    
    • <UPN> 是 Microsoft 365 工作或学校帐户。

    • <ConnectionUri> <AzureADUri> 值取决于 Microsoft 365 组织的性质,如下表所述:


    Microsoft 365 产品 ConnectionUri 参数值 AzureADAuthorizationEndPointUri 参数值
    Microsoft 365 未使用 未使用
    Office 365 德国 https://outlook.office.de/PowerShell-LiveID https://login.microsoftonline.de/common
    Microsoft 365 GCC High https://outlook.office365.us/powershell-liveid https://login.microsoftonline.us/common
    Microsoft 365 DoD https://webmail.apps.mil/powershell-liveid https://login.microsoftonline.us/common

    此示例使用帐户连接 Microsoft 365 中的 Exchange Online chris@contoso.com。

    Connect-EXOPSSession -UserPrincipalName chris@contoso.com
    

    此示例使用帐户帐户连接到 Exchange Online Germany lukas@fabrikam.com。

    Connect-EXOPSSession -UserPrincipalName lukas@fabrikam.com -ConnectionUri https://outlook.office.de/PowerShell-LiveID -AzureADAuthorizationEndPointUri https://login.microsoftonline.de/common
    

    此示例连接到 Exchange Online 以管理另一个租户。

    Connect-EXOPSSession -UserPrincipalName chris@contoso.com -DelegatedOrganization fabrikam.onmicrosoft.com
    
  3. 在打开的登录窗口中,输入密码,然后单击“登录”。

    在 Exchange Online 远程 PowerShell 窗口中输入密码

    根据为帐户配置的验证响应选项(例如,短信或移动电话上的 Azure Authenticator 应用) (生成并传递验证码) 。

  4. 在打开的验证窗口中,输入验证码,然后单击“登录”。

    在 Exchange Online 远程 PowerShell 窗口中输入验证码

备注

确保在完成后断开与远程 PowerShell 会话的连接。 如果在不断开会话连接的情况下关闭 Exchange Online 远程 PowerShell 模块窗口,可能会使用所有可用的远程 PowerShell 会话,并且需要等待会话过期。 若要断开当前窗口中所有当前打开的 PowerShell 会话,请运行以下命令:

Get-PSSession | Remove-PSSession

单一登录

如果组织启用了单一登录 (SSO) ,并且您以 SSO 域中的用户身份登录到计算机, 则 Connect-EXOPSSession 可能会失败,并出现以下错误:

New-EXOPSSession:服务返回的用户"loggedonuser@contoso.com"与请求中的用户"userprincipalname@contoso.com"不匹配。

发生此错误的原因是单一登录会覆盖 UPN (指定的) 。 作为一种处理方法,Connect-EXOPSSession -UserPrincipalName 参数,或者改为使用 -Credential 参数。

如何知道操作成功?

在步骤 4 之后,Exchange Online cmdlet 将导入 Exchange Online 远程 PowerShell 模块会话,并按进度栏进行跟踪。 如果未收到任何错误,说明连接成功。 一个快速测试是运行 Exchange Online cmdlet(例如 Get-Mailbox),然后查看结果。

如果收到错误,则查看以下要求:

  • 为有助于防止拒绝服务攻击 (DoS),你最多只能享受五次与Exchange Online 的开放远程 PowerShell 连接。

  • 必须为远程 PowerShell 启用用于连接到 Exchange Online 的帐户。有关详细信息,请参阅启用或禁用对 Exchange Online PowerShell 的访问

  • 需要在本地计算机和 Microsoft 365 之间打开 TCP 端口 80 通信。 它可能已经打开了,但是要考虑你的组织是否存在严格的 Internet 访问政策。