连接到安全与合规 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 实现自动化,请参阅 无人参与脚本的仅限应用的身份验证。
开始前,有必要了解什么?
安装和维护 Exchange Online PowerShell 模块中介绍了安装并使用模块的要求。
注意
安全 & 合规性 PowerShell 中已弃用远程 PowerShell 连接。 有关详细信息,请参阅 安全 & 合规性 PowerShell 中的弃用远程 PowerShell (RPS) 协议。
Exchange Online PowerShell V3 模块中的 REST API 连接需要 PowerShellGet 和 PackageManagement 模块。 有关详细信息,请参阅 PowerShellGet for 基于 REST 的连接在 Windows 中。
连接后,你有权或无权访问的 cmdlet 和参数都将由基于角色的访问控制 (RBAC) 进行控制。 有关详细信息,请参阅 Microsoft Defender 门户中的权限和 Microsoft Purview 合规性门户中的权限。
步骤 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
) 。所需的 ConnectionUri 和 AzureADAuthorizationEndpointUri 值取决于 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 参数。
- ConnectionUri:无。 所需的值
- Microsoft 365 GCC 高:
- ConnectionUri:
https://ps.compliance.protection.office365.us/powershell-liveid/
- AzureADAuthorizationEndpointUri:
https://login.microsoftonline.us/common
- ConnectionUri:
- Microsoft 365 DoD:
- ConnectionUri:
https://l5.ps.compliance.protection.office365.us/powershell-liveid/
- AzureADAuthorizationEndpointUri:
https://login.microsoftonline.us/common
- ConnectionUri:
- 由世纪互联运营的 Office 365:
- ConnectionUri:
https://ps.compliance.protection.partner.outlook.cn/powershell-liveid
- AzureADAuthorizationEndpointUri:
https://login.chinacloudapi.cn/common
- ConnectionUri:
- Microsoft 365 或 Microsoft 365 GCC:
如果你位于代理服务器后面,则可以在连接命令中使用 PSSessionOption 参数。 首先,运行此命令:
$ProxyOptions = New-PSSessionOption -ProxyAccessType <Value>
,其中 <Value> 为IEConfig
、WinHttpConfig
或AutoDetect
。 然后,使用 PSSessionOption 参数的值$ProxyOptions
。 有关详细信息,请参阅 New-PSSessionOption。根据组织的性质,可以在下一步中省略 UserPrincipalName 参数。 而是在运行 Connect-IPPSSession 命令后输入用户名和密码或选择存储的凭据。 如果不起作用,则需要使用参数 UserPrincipalName 参数。
如果不使用 MFA,则应能够使用 Credential 参数,而不是 UserPrincipalName 参数。 首先,运行命令
$Credential = Get-Credential
,输入用户名和密码,然后使用 凭据参数 ( ) 的变量-Credential $Credential
。 如果不起作用,则需要使用参数 UserPrincipalName 参数。
使用交互式登录提示连接到安全性 & 合规性 PowerShell
以下示例适用于具有或不带 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
在打开的登录窗口中,输入密码,然后单击“登录”。
注意
在 PowerShell 7 中,默认使用基于浏览器的单一登录 (SSO) ,因此登录提示将在默认 Web 浏览器中打开,而不是在独立对话框中打开。
仅 MFA:根据为帐户配置的回复选项(例如,你的设备上短信或 Microsoft Authenticator 应用)生成并传递验证码。
在打开的验证窗口中,输入验证码,然后单击 验证。
无需登录提示 (无人参与的脚本) 连接到安全性 & 合规性 PowerShell
有关完整说明,请参阅 Exchange Online PowerShell 中无人参与脚本的仅限应用身份验证和安全性 & 合规性 PowerShell。
在客户组织中连接到安全性 & 合规性 PowerShell
本部分中的过程需要模块版本 3.0.0 或更高版本。
在安全性 & 合规性 PowerShell 中,需要将 AzureADAuthorizationEndpointUri 与 DelegatedOrganization 参数结合使用。
有关合作伙伴和客户组织的详细信息,请参阅以下主题:
此示例在以下方案中连接到客户组织:
使用 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 终结点。