连接到安全与合规 PowerShell

本文包含有关如何使用 Exchange Online PowerShell 模块(无论是否具有多重身份验证 (MFA) )连接到安全性 & 合规性 PowerShell 的说明。

Exchange Online PowerShell 模块使用新式身份验证连接到 Microsoft 365 中的所有与 Exchange 相关的 PowerShell 环境:Exchange Online PowerShell、安全性 & 合规性 PowerShell 和独立的 Exchange Online Protection (EOP) PowerShell。 有关 Exchange Online PowerShell 模块的详细信息,请参阅 关于 Exchange Online PowerShell 模块

若要连接到 Security & Compliance PowerShell 实现自动化,请参阅 无人参与脚本的仅限应用的身份验证

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

步骤 1:加载 Exchange Online PowerShell 模块

注意

如果已安装模块,通常可以跳过此步骤并运行 Connect-IPPSSession ,而无需先手动加载模块。

安装模块后,打开 PowerShell 窗口,并通过运行以下命令加载模块:

Import-Module ExchangeOnlineManagement

步骤 2:连接并进行身份验证

注意

如果用于连接的帐户的配置文件路径包含特殊 PowerShell 字符, (例如,) , $ 连接命令可能会失败。 解决方法是使用配置文件路径中没有特殊字符的其他帐户进行连接。

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

Connect-IPPSSession -UserPrincipalName <UPN> [-ConnectionUri <URL>] [-AzureADAuthorizationEndpointUri <URL>] [-DelegatedOrganization <String>] [-PSSessionOption $ProxyOptions]

有关详细的语法和参数信息,请参阅 Connect-IPPSSession

  • <UPN> 是用户主体名称格式的帐户, (例如 navin@contoso.onmicrosoft.com) 。

  • 所需的 ConnectionUriAzureADAuthorizationEndpointUri 值取决于 Microsoft 365 组织的性质。 以下列表中描述了常见值:

    • Microsoft 365 或 Microsoft 365 GCC
      • ConnectionUri:无。 所需的值 https://ps.compliance.protection.outlook.com/powershell-liveid/ 也是默认值,因此无需在 Microsoft 365 或 Microsoft 365 GCC 环境中使用 ConnectionUri 参数。
      • AzureADAuthorizationEndpointUri:无。 所需的值 https://login.microsoftonline.com/common 也是默认值,因此无需在 Microsoft 365 或 Microsoft 365 GCC 环境中使用 AzureADAuthorizationEndpointUri 参数。
    • Microsoft 365 GCC 高
      • ConnectionUrihttps://ps.compliance.protection.office365.us/powershell-liveid/
      • AzureADAuthorizationEndpointUrihttps://login.microsoftonline.us/common
    • Microsoft 365 DoD
      • ConnectionUrihttps://l5.ps.compliance.protection.office365.us/powershell-liveid/
      • AzureADAuthorizationEndpointUrihttps://login.microsoftonline.us/common
    • 由世纪互联运营的 Office 365
      • ConnectionUrihttps://ps.compliance.protection.partner.outlook.cn/powershell-liveid
      • AzureADAuthorizationEndpointUrihttps://login.chinacloudapi.cn/common
  • 如果你位于代理服务器后面,则可以在连接命令中使用 PSSessionOption 参数。 首先,运行此命令: $ProxyOptions = New-PSSessionOption -ProxyAccessType <Value>,其中 <Value> 为 IEConfigWinHttpConfigAutoDetect。 然后,使用 PSSessionOption 参数的值$ProxyOptions。 有关详细信息,请参阅 New-PSSessionOption

  • 根据组织的性质,可以在下一步中省略 UserPrincipalName 参数。 而是在运行 Connect-IPPSSession 命令后输入用户名和密码或选择存储的凭据。 如果不起作用,则需要使用参数 UserPrincipalName 参数。

  • 如果不使用 MFA,则应能够使用 Credential 参数,而不是 UserPrincipalName 参数。 首先,运行命令 $Credential = Get-Credential,输入用户名和密码,然后使用 凭据参数 ( ) 的变量-Credential $Credential。 如果不起作用,则需要使用参数 UserPrincipalName 参数。

使用交互式登录提示连接到安全性 & 合规性 PowerShell

  1. 以下示例适用于具有或不带 MFA 的帐户的 Windows PowerShell 5.1 和 PowerShell 7:

    • 此示例连接到 Microsoft 365 或 Microsoft 365 GCC 组织中的安全与合规 PowerShell

      Connect-IPPSSession -UserPrincipalName navin@contoso.onmicrosoft.com
      
    • 此示例连接到 Microsoft GCC High 组织中的安全与合规 PowerShell

      Connect-IPPSSession -UserPrincipalName chris@govt.us -ConnectionUri https://ps.compliance.protection.office365.us/powershell-liveid/ -AzureADAuthorizationEndpointUri https://login.microsoftonline.us/common
      
    • 此示例连接到 Microsoft 365 DoD 组织中的安全与合规 PowerShell

      Connect-IPPSSession -UserPrincipalName michelle@govt.mil -ConnectionUri https://l5.ps.compliance.protection.office365.us/powershell-liveid/ -AzureADAuthorizationEndpointUri https://login.microsoftonline.us/common
      
    • 此示例连接到由世纪互联组织运营的 Office 365 中的安全与合规 PowerShell

      Connect-IPPSSession -UserPrincipalName li@fabrikam.cn -ConnectionUri https://ps.compliance.protection.partner.outlook.cn/powershell-liveid -AzureADAuthorizationEndpointUri https://login.chinacloudapi.cn/common
      
  2. 在打开的登录窗口中,输入密码,然后单击“登录”。

    在“登录您的帐户”窗口中输入密码。

    注意

    在 PowerShell 7 中,默认使用基于浏览器的单一登录 (SSO) ,因此登录提示将在默认 Web 浏览器中打开,而不是在独立对话框中打开。

  3. 仅 MFA:根据为帐户配置的回复选项(例如,你的设备上短信或 Microsoft Authenticator 应用)生成并传递验证码。

    在打开的验证窗口中,输入验证码,然后单击 验证

    在“登录您的账户”窗口中输入验证码。

无需登录提示 (无人参与的脚本) 连接到安全性 & 合规性 PowerShell

有关完整说明,请参阅 Exchange Online PowerShell 中无人参与脚本的仅限应用身份验证和安全性 & 合规性 PowerShell

在客户组织中连接到安全性 & 合规性 PowerShell

本部分中的过程需要模块版本 3.0.0 或更高版本。

在安全性 & 合规性 PowerShell 中,需要将 AzureADAuthorizationEndpointUriDelegatedOrganization 参数结合使用。

有关合作伙伴和客户组织的详细信息,请参阅以下主题:

此示例在以下方案中连接到客户组织:

  • 使用 CSP 帐户连接到客户组织。

  • 使用 GDAP 连接到客户组织。

  • 以来宾用户身份连接到客户组织。

    Connect-IPPSSession -UserPrincipalName navin@contoso.onmicrosoft.com -DelegatedOrganization adatum.onmicrosoft.com -AzureADAuthorizationEndpointUri https://login.microsoftonline.com/adatum.onmicrosoft.com
    

步骤 3:完成后断开连接

完成后,请务必断开会话的连接。 如果在未断开会话连接的情况下关闭 PowerShell 窗口,则可能会用尽所有可用会话,并且需要等待会话过期。 若要断开会话连接,请运行以下命令:

Disconnect-ExchangeOnline

若要在无确认提示的情况下以无提示方式断开连接,请运行以下命令:

Disconnect-ExchangeOnline -Confirm:$false

注意

如果用于连接的帐户的配置文件路径包含特殊 PowerShell 字符, (例如,) , $ 则 disconnect 命令可能会失败。 解决方法是使用配置文件路径中没有特殊字符的其他帐户进行连接。

如何知道已成功连接?

安全与合规 PowerShell cmdlet 现已导入到你的本地 Windows PowerShell 会话并由进度条跟踪。 如果未收到任何错误,则说明已成功连接。 快速测试就是运行安全与合规 PowerShell cmdlet(例如 Get-RetentionCompliancePolicy),然后查看结果。

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

  • 常见问题是密码错误。 重新运行上述三个步骤,并仔细查看所使用的用户名和密码。

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

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

  • 与安全性 & 合规性 PowerShell 的基于 REST 的连接需要 PowerShellGet 模块,并且根据依赖项,需要 PackageManagement 模块,因此,如果尝试连接而不安装它们,将收到错误。 例如,你可能会看到以下错误:

    不能将术语“Update-ModuleManifest”识别为 cmdlet、函数、脚本文件或可操作程序的名称。 检查名称的拼写,或者是否包含路径,验证路径是否正确,然后重试。

    有关 PowerShellGet 和 PackageManagement 模块要求的详细信息,请参阅 Windows 中基于 REST 的连接的 PowerShellGet

  • 如果客户端 IP 地址在连接请求期间发生更改,则可能无法连接。 如果你的组织使用包含多个 IP 地址的源网络地址转换 (SNAT) 池,则可能会发生这种情况。 连接错误如下所示:

    对具有 ShellId <ID> 的 Windows 远程 Shell 的请求失败,因为在服务器上找不到 shell。 可能的原因包括:指定的 ShellId 不正确或 shell 在服务器上不再存在。 提供正确的 ShellId 或创建新的 shell,然后重试操作。

    若要解决此问题,请使用包含单个 IP 地址的 SNAT 池,或强制使用特定 IP 地址连接到安全与合规 PowerShell 终结点。