自 2022 年以来,Exchange Online PowerShell 模块 (也称为 Exchange Online PowerShell V3 模块或 EXO V3 模块,) 使用新式身份验证,并且使用或不使用多重身份验证 (MFA) 连接到所有与 Exchange 云相关的 PowerShell 环境:Exchange Online PowerShell、安全性 & 合规性 PowerShell、和 Exchange Online Protection PowerShell,用于对本地电子邮件环境进行云保护。
有关使用 模块的连接说明,请参阅以下文章:
连接到 Exchange Online PowerShell
提示
Exchange Online Protection用于本地电子邮件环境的云保护的 PowerShell 使用与 Exchange Online PowerShell 相同的连接说明。
Exchange Online PowerShell 和安全 & 合规性 PowerShell 中无人参与的脚本的仅限应用身份验证
本文的其余部分将介绍模块的工作方式、如何安装和维护模块,以及模块中提供的优化 Exchange Online cmdlet。
EXO V3 模块中的 REST API 连接
Exchange Online PowerShell 和安全 & 合规性 PowerShell 自 2023 年以来对所有 cmdlet 使用 REST API 连接。
REST API 连接需要 PowerShellGet 和 PackageManagement 模块。 有关详细信息,请参阅 PowerShellGet for 基于 REST 的连接在 Windows 中。
与历史对应项相比,REST API 连接中的 Cmdlet 具有以下优势:
- 更安全:内置对新式身份验证的支持,不依赖于远程 PowerShell 会话。 客户端计算机上的 PowerShell 不需要 WinRM 中的基本身份验证。
-
更可靠:暂时性故障使用内置重试,从而最大程度地减少故障或延迟。 例如:
- 网络延迟导致的故障。
- 由于需要很长时间才能完成的大型查询而导致延迟。
- 更好的性能:REST API 连接可避免设置 PowerShell 运行空间。
下表比较了 REST API cmdlet 与 EXO V3 模块中不可用的远程 PowerShell cmdlet 和独占 Get-EXO* cmdlet 的优点
| 远程 PowerShell cmdlet | Get-EXO* cmdlet | REST API cmdlet | |
|---|---|---|---|
| 安全性 | 最不安全 | 高度安全 | 高度安全 |
| 性能 | 性能低 | 高性能 | 中等性能 |
| 可靠性 | 最不可靠 | 高度可靠 | 高度可靠 |
| 功能 | 所有可用的参数和输出属性 | 可用的有限参数和输出属性 | 所有可用的参数和输出属性 |
REST API cmdlet 具有相同的 cmdlet 名称,其工作方式与其远程 PowerShell 等效项类似,因此无需更新脚本中的 cmdlet 名称或参数。
提示
Invoke-Command cmdlet 在 REST API 连接中不起作用。 有关替代方法,请参阅 REST API 连接中 Invoke-Command 方案的解决方法。
Exchange Online PowerShell 中的一些 cmdlet 已使用试验性的 UseCustomRouting 开关进行更新。 使用此开关将命令直接路由到所需的邮箱服务器,并且可能会提高整体性能。 试验性地使用 UseCustomRouting 开关。
使用 UseCustomRouting 开关时,需要使用以下值来标识邮箱:
- 用户主体名称 (UPN)
- 电子邮件地址
- 邮箱 GUID
UseCustomRouting 开关仅在以下 PowerShell cmdlet Exchange Online可用:
- Get-Clutter
- Get-FocusedInbox
- Get-InboxRule
- Get-MailboxAutoReplyConfiguration
- Get-MailboxCalendarFolder
- Get-MailboxFolderPermission
- Get-MailboxFolderStatistics
- Get-MailboxMessageConfiguration
- Get-MailboxPermission
- Get-MailboxRegionalConfiguration
- Get-MailboxStatistics
- Get-MobileDeviceStatistics
- GetUserPhoto
- Remove-CalendarEvents
- Set-Clutter
- Set-FocusedInbox
- Set-MailboxRegionalConfiguration
- Set-UserPhoto
使用 Get-ConnectionInformation cmdlet 获取有关与 PowerShell Exchange Online 和 Security & Compliance PowerShell 的连接的信息。 此 cmdlet 是必需的,因为 Windows PowerShell 中的 Get-PSSession cmdlet 不会返回 REST API 连接的信息。
下表介绍了可以使用 Get-ConnectionInformation 的方案:
应用场景 预期输出 在 Connect-ExchangeOnline 或 Connect-IPPSSession 命令之后运行。 返回一个连接信息对象。 在多个 Connect-ExchangeOnline 或 Connect-IPPSSession 命令之后运行。 返回连接信息对象的集合。 使用 Connect-ExchangeOnline cmdlet 上的 SkipLoadingFormatData 开关可避免加载格式数据并更快地运行 Connect-ExchangeOnline 命令。
REST API 支持的 Cmdlet 超时为 15 分钟,这可能会影响批量作。 例如,用于更新通讯组 10,000 个成员的以下 Update-DistributionGroupMember 命令可能会超时:
$Members = @("member1","member2",...,"member10000") Update-DistributionGroupMember -Identity DG01 -Members $Members相反,请使用 Update-DistributionGroupMember 命令更新更少的成员,然后使用 Add-DistributionGroupMember 命令单独添加剩余成员。 例如:
Update-DistributionGroupMember -Identity DG01 -Members $Members[0..4999] $Remaining = $Members[-5000..-1] foreach ($Member in $Remaining) { Add-DistributionGroupMember -Identity DG01 -Member $Member }
有关 EXO V3 模块中的新增功能的详细信息,请参阅本文后面的 发行说明 部分。
报告 Exchange Online PowerShell 模块预览版的 bug 和问题
提示
对于正式发布 (正式发布) 模块版本,请勿使用以下电子邮件地址来报告问题。 有关模块的 GA 版本的消息不会应答。 请改为开具支持票证。
对于模块的预览版本,请使用 exocmdletpreview[at]service[dot]microsoft[dot]com 报告你可能会遇到的任何问题。 请务必在电子邮件中包含日志文件。 若要生成日志文件,请将 Path> 替换为<输出文件夹,然后运行以下命令:
Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path> -LogLevel All
Exchange Online PowerShell 模块中的 Cmdlet
EXO 模块包含 9 个独占 Get-EXO* cmdlet,这些 cmdlet 针对批量数据检索方案中的速度进行优化, (Exchange Online PowerShell 中) 数千个对象。 下表中列出了模块中改进的 cmdlet:
提示
如果在同一窗口中打开多个连接到 Exchange Online PowerShell,则 Get-EXO* cmdlet 始终与最近 () Exchange Online PowerShell 连接相关联。 运行以下命令以查找运行 Get-EXO* cmdlet 的 REST API 会话: Get-ConnectionInformation | Where-Object {$_.ConnectionUsedForInbuiltCmdlets -eq $true}。
下表中列出了模块中与连接相关的 cmdlet:
| EXO 模块 cmdlet | 较旧相关 cmdlet | Comments |
|---|---|---|
| Connect-ExchangeOnline | 模块 V1 中的 Connect-EXOPSSession 或 New-PSSession |
|
| Connect-IPPSSession | 模块 V1 中的 Connect-IPPSSession | |
| Disconnect-ExchangeOnline | Remove-PSSession | |
| Get-ConnectionInformation | Get-PSSession | 在 v3.0.0 或更高版本中可用。 |
提示
在单个 PowerShell 会话或脚本中频繁使用 Connect-ExchangeOnline 和 Disconnect-ExchangeOnline cmdlet 可能会导致内存泄漏。 避免此问题的最佳方法是在 Connect-ExchangeOnline cmdlet 上使用 CommandName 参数来限制会话中使用的 cmdlet。
下表列出了模块中的杂项Exchange Online功能 cmdlet:
安装和维护 Exchange Online PowerShell 模块
可从 PowerShell 库 https://www.powershellgallery.com/packages/ExchangeOnlineManagement/下载模块。
本部分中的过程说明如何安装、更新和卸载模块。
Exchange Online PowerShell 模块支持的作系统
Windows、Linux 和 Apple macOS 上的 PowerShell 7 正式支持该模块:
- 模块版本 3.5.0 (2024 年 5 月) 或更高版本需要 PowerShell 7.4.0 (2023 年 11 月) 或更高版本,因为 .NET 8.0 程序集依赖项。 早期版本的 PowerShell 7 可能会遇到兼容性问题, (PowerShell 7.3.6 比 7.3.7) 更兼容。
- 模块版本 3.0.0 (2022 年 9 月) 到 3.4.0 (2023 年 10 月) 需要 PowerShell 7.2.0 () 或更高版本,因为 REST API cmdlet 和连接中的 .NET 6.0 程序集依赖项。
- 对 PowerShell 7 中模块的支持从 2021 年 2 月 2021 年 2 月 2.0.4 (开始,) PowerShell 7.0.3 (2020 年 7 月) 。
有关 PowerShell 7 的详细信息,请参阅 什么是 PowerShell?。
提示
Windows PowerShell 5.1 中支持并兼容模块的所有版本。
如前所述,Exchange Online PowerShell 和安全 & 合规性 PowerShell 中仅支持 REST API 连接:
- 模块版本 2.0.4 (2021 年 2 月) 仅支持 9 个独占 Get-EXO* cmdlet 的 REST API。
- 模块版本 2.0.5 (2021 年 5 月) 仅部分支持 Exchange Online PowerShell 中的 REST API cmdlet。
- 版本 3.0.0 (2022 年 9 月) 或更高版本完全支持 Exchange Online PowerShell 中的 REST API cmdlet。
- 版本 3.2.0 (2023 年 6 月) 或更高版本完全支持安全性 & 合规性 PowerShell 中的 REST API cmdlet。
Apple macOS
注意
目前,MacOS 客户端上的 PowerShell 7 中不提供 Connect-IPPSSession 以及安全性 & 合规性 PowerShell。
以下版本的 macOS 支持该模块:
macOS 13 Ventura 或更高版本:
模块版本 PowerShell 版本 3.5.0 或更高版本 7.4.0 或更高版本 7.4.0 是 macOS 13 或更高版本中支持的最低 PowerShell 7 版本。 还支持模块版本 3.0.0 到 3.4.0。
macOS 12 蒙特利 和 mac OS 11 Big Sur:
模块版本 PowerShell 版本 3.5.0 或更高版本 7.4.x 3.0.0 到 3.4.0 7.2.0 到 7.3.7 (或更高版本) 2.0.4 和 2.0.5 7.0.3 到 7.1.5 (或更高版本) 所有处理器都支持模块版本 3.0.0 或更高版本。
模块版本 2.0.4 和 2.0.5 在 Intel 处理器上本机运行。 Apple M1 或 Apple M2 处理器需要 Apple Rosetta 2。
7.4.x 是 macOS 11 和 macOS 12 中支持的最新 PowerShell 7 版本。
macOS 10.15 Catalina:
模块版本 PowerShell 版本 3.0.0 到 3.4.0 7.2.0 到 7.2.22 2.0.4 和 2.0.5 7.0.3 到 7.1.5 (或更高版本) 7.2.22 是 macOS 10.15 中支持的最新 PowerShell 7 版本。
macOS 10.14 Mojave
模块版本 PowerShell 版本 2.0.4 和 2.0.5 7.0.3 到 7.1.5 7.1.5 是 macOS 10.14 中支持的最新 PowerShell 7 版本。
关于在 macOS 上安装 PowerShell 7 的说明,请参阅在 macOS 上安装 PowerShell。
如安装文章中所述,你需要安装 WSMan 所需的 OpenSSL。
安装 PowerShell 7 和 OpenSSL 后,请执行以下步骤:
以超级用户运行 PowerShell:
sudo pwsh在 PowerShell 超级用户会话中,运行以下命令:
Install-Module -Name PSWSMan Install-WSMan如果系统提示,接受 PSGallery 作为 cmdlet 的源。
现在,可以执行常规 PowerShell 先决条件并安装 Exchange Online PowerShell 模块。
Linux
注意
目前, Connect-IPPSSession 以及安全性 & 合规性 PowerShell 在 Linux 客户端上的 PowerShell 7 中不可用。
如果从代理服务器后面的网络连接到 Linux 上的 Exchange Online PowerShell,则需要使用模块版本 3.0.0 或更高版本。
以下 Linux 发行版中正式支持该模块:
Ubuntu 24.04 LTS
模块版本 PowerShell 版本 3.5.0 或更高版本 7.4.0 或更高版本 3.0.0 到 3.4.0 7.2.0 到 7.3.7 (或更高版本) Ubuntu 20.04 LTS
模块版本 PowerShell 版本 3.5.0 或更高版本 7.4.x 3.0.0 到 3.4.0 7.2.0 到 7.3.7 (或更高版本) 2.0.4 和 2.0.5 7.0.3 到 7.1.5 (或更高版本) 版本 3.7.0 或更高版本可能会失败并出现 SSL 协议错误。
Ubuntu 18.04 LTS
模块版本 PowerShell 版本 3.5.0 或更高版本 7.4.x 3.0.0 到 3.4.0 7.2.0 到 7.3.7 (或更高版本) 2.0.4 和 2.0.5 7.0.3 到 7.1.5 (或更高版本) 模块版本 3.7.0 或更高版本在 Ubuntu 18.04 LTS 中可能存在可靠性问题。
关于在 Linux 上安装 PowerShell 7 的说明,请参阅在 Linux 上安装 PowerShell。
安装 PowerShell 7 后,请执行以下步骤:
以超级用户运行 PowerShell:
sudo pwsh在 PowerShell 超级用户会话中,运行以下命令:
Install-Module -Name PSWSMan Install-WSMan如果系统提示,接受 PSGallery 作为 cmdlet 的源。
现在,可以执行常规 PowerShell 先决条件并安装 Exchange Online PowerShell 模块。
Windows
Windows PowerShell 5.1:
- 支持模块的所有版本。
- 当前版本的 Windows 包含所需的.NET Framework版本,因此无需安装.NET Framework即可在 Windows PowerShell 5.1 中使用模块。
PowerShell 7:
- 模块版本 3.5.0 (2024 年 5 月) 或更高版本需要 PowerShell 7.4.0 (2023 年 11 月) 或更高版本,因为 .NET 8.0 程序集依赖项。 早期版本的 PowerShell 7 可能会遇到兼容性问题, (PowerShell 7.3.6 与模块的兼容性比 7.3.7) 更高。
- 模块版本 3.0.0 (2022 年 9 月) 到 3.4.0 (2023 年 10 月) 需要 PowerShell 7.2.0 () 或更高版本,因为 REST API cmdlet 和连接中的 .NET 6.0 程序集依赖项。
- 对 PowerShell 7 中模块的支持从 2021 年 2 月 2021 年 2 月 2.0.4 (开始,) PowerShell 7.0.3 (2020 年 7 月) 。
Windows 中的特定模块版本支持取决于Windows PowerShell支持以及.NET Framework和/或 .NET 支持,如以下列表所述:
Windows 11:
模块版本 PowerShell 版本 .NET 要求 2.0.5 或更高版本 5.1 .NET Framework包含 4.7.2 (4.8.x,因此无需安装.NET Framework) 3.5.0 或更高版本 7.4.0 或更高版本 .NET 8.0
包含在 24H2 或更高版本中。3.0.0 到 3.4.0 7.2.0 到 7.3.7 (或更高版本) .NET 6.0 (7.2.x)
.NET 7.0 (7.3.x)7.2.0 (.NET 6.0) 是 Windows 11 中最早支持的 PowerShell 7 版本。
Windows Server 2022:
模块版本 PowerShell 版本 .NET 要求 2.0.5 或更高版本 5.1 .NET Framework 4.7.2 (4.8 包含在内,因此无需安装 .NET Framework) 3.5.0 或更高版本 7.4.0 或更高版本 .NET 8.0 3.0.0 到 3.4.0 7.2.0 到 7.3.7 (或更高版本) .NET 6.0 (7.2.x)
.NET 7.0 (7.3.x)7.2.0 (.NET 6.0) 是 2022 Windows Server中最早支持的 PowerShell 7 版本。
Windows 10:
模块版本 PowerShell 版本 支持的 Windows 版本 .NET 要求 2.0.5 或更高版本 5.1 周年更新 (版本 1607;2016 年 8 月) 或更高版本 .NET Framework 4.7.2
2018 年 4 月更新 (版本 1803) 或更高版本包含 .NET Framework 4.7.2,因此无需下载。3.5.0 或更高版本 7.4.0 或更高版本 2018 年 10 月更新 (版本 1809) 或更高版本 .NET 8.0 3.0.0 到 3.4.0 7.2.0 到 7.3.7 (或更高版本) 2018 年 10 月更新 (版本 1809) 或更高版本 .NET 6.0 (7.2.x)
.NET 7.0 (7.3.x)2.0.4 和 2.0.5 7.0.3 到 7.1.5 (或更高版本) 周年更新 (版本 1607;2016 年 8 月) 或更高版本 .NET Core 3.1 (7.0.x)
.NET 5.0 (7.1.x)2019 Windows Server 2016 和 Windows Server:
模块版本 PowerShell 版本 .NET 要求 2.0.5 或更高版本 5.1 .NET Framework 4.7.2
包含在 2019 Windows Server 中。3.5.0 或更高版本 7.4.0 或更高版本 .NET 8.0 3.0.0 到 3.4.0 7.2.0 到 7.3.7 (或更高版本) .NET 6.0 (7.2.x)
.NET 7.0 (7.3.x)2.0.4 和 2.0.5 7.0.3 到 7.1.5 (或更高版本) .NET Core 3.1 (7.0.x)
.NET 5.0 (7.1.x)Windows 8.1、Windows Server 2012和Windows Server 2012 R2:
模块版本 PowerShell 版本 .NET 要求 2.0.5 或更高版本 5.1 .NET Framework 4.7.2 3.0.0 到 3.4.0 7.2.x .NET 6.0 2.0.4 和 2.0.5 7.0.3 到 7.1.5 (或更高版本) .NET Core 3.1 (7.0.x)
.NET 5.0 (7.1.x)7.2.22 (.NET 6.0) 是 Windows 8.1、Windows Server 2012 和 Windows Server 2012 R2 中支持的最新 PowerShell 7 版本。
Windows 7.1 SP1 和 Windows Server 2008 R2 SP1:
模块版本 PowerShell 版本 .NET 要求 2.0.3 5.1 .NET Framework 4.7.1 注意
虽然可以安装此版本的模块,但无法连接到 Exchange Online PowerShell。 模块版本 2.0.3 缺少对 REST API 连接的支持。
Exchange Online PowerShell 模块的先决条件
将 PowerShell 执行策略设置为 RemoteSigned
提示
本部分中的设置适用于所有作系统上的所有 PowerShell 版本。
PowerShell 需要进行相关配置,才能运行脚本。默认情况下,它并没有进行配置。 尝试连接时,会出现以下错误:
无法加载文件,因为在此系统上已禁用运行脚本。 提供有效的证书,以便对文件进行签名。
若要要求对从 Internet 下载的所有 PowerShell 脚本进行受信任的发布者签名,请在提升的 PowerShell 窗口中运行以下命令, (打开的 PowerShell 窗口,方法是选择“ 以管理员身份运行 ”) :
Set-ExecutionPolicy RemoteSigned
有关执行策略的详细信息,请参阅关于执行策略。
WinRM 中的基本身份验证
截至 2023 年 10 月,REST API 连接取代了 (Exchange Online PowerShell 和安全 & 合规性 PowerShell 中的远程 PowerShell) 连接的基本身份验证。 REST API 连接不需要 WinRM 中的基本身份验证。
版本 3.2.0 (2023 年 6 月) 及更高版本的模块完全支持 Exchange Online PowerShell 和安全性 & 合规性 PowerShell 中的 REST API cmdlet。
Windows 中需要 PowerShellGet
Windows 中的 REST API 连接需要 PowerShellGet 模块。 根据依赖项,PowerShellGet 模块需要 PackageManagement 模块。 这些模块的注意事项更多的是 PowerShell 5.1 而不是 PowerShell 7,但所有版本的 PowerShell 都受益于安装最新版本的模块。 有关安装和更新说明,请参阅 在 Windows 上安装 PowerShellGet。
提示
预览版 PackageManagement 或 PowerShellGet 模块可能会导致连接问题。 如果遇到连接问题,请运行以下命令,验证是否未安装模块的预览版本: Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions。
如果在尝试连接时未安装 PowerShellGet,则会收到以下错误:
找不到 cmdlet Update-Manifest
安装 Exchange Online PowerShell 模块
若要首次安装模块,请完成以下步骤:
按照安装 PowerShellGet 中的说明安装或更新 PowerShellGet 模块。
关闭并重新打开Windows PowerShell窗口。
现在,可以使用 Install-Module cmdlet 从PowerShell 库安装模块。 通常,需要模块的最新公共版本,但也可以安装比当前版本更新的预览版。
若要安装 模块的最新公共版本 ,请运行以下命令 之一 :
在提升的 PowerShell 窗口中(所有用户):
Install-Module -Name ExchangeOnlineManagement仅适用于当前用户帐户:
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
若要查看 模块的可用预览版 ,请运行以下命令:
Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease若要安装 模块的最新可用预览版 ,请运行以下命令 之一 :
在提升的 PowerShell 窗口中(所有用户):
Install-Module -Name ExchangeOnlineManagement -AllowPrerelease仅适用于当前用户帐户:
Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
若要安装模块的特定预览版,请将 PreviewVersion> 替换为<所需的值,并运行以下命令之一:
在提升的 PowerShell 窗口中(所有用户):
Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease仅适用于当前用户帐户:
Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease -Scope CurrentUser
完成后,输入“Y”以接受许可协议。
有关语法和参数的详细信息,请参阅 Install-Module。
更新 Exchange Online PowerShell 模块
如果计算机上已安装模块,则可以使用本部分中的过程更新模块。
若要查看当前安装的模块版本及其安装位置,请运行以下命令:
Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation如果模块安装在 C:\Program Files\WindowsPowerShell\Modules 中,则会为所有用户安装该模块。 如果模块安装在 Documents 文件夹中,则仅针对当前用户帐户安装该模块。
可以使用 Update-Module cmdlet 从PowerShell 库更新模块。 通常,需要模块的最新公共版本,但也可以升级到预览版(如果有)。
若要升级到 模块的最新公共版本 ,请根据最初 (所有用户安装模块的方式(仅针对当前用户帐户) )运行以下命令 之一 :
在提升的 PowerShell 窗口中(所有用户):
Update-Module -Name ExchangeOnlineManagement仅适用于当前用户帐户:
Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser
若要升级到模块的 预览版 ,可以升级到最新可用的预览版,也可以使用 RequiredVersion 参数升级到特定的预览版。
若要查看 模块的可用预览版 ,请运行以下命令:
Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease若要升级到模块 的最新可用预览版 ,请运行以下命令 之一 :
在提升的 PowerShell 窗口中(所有用户):
Update-Module -Name ExchangeOnlineManagement -AllowPrerelease仅适用于当前用户帐户:
Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
若要升级到模块的特定预览版,请将 PreviewVersion> 替换为<所需的值,并运行以下命令之一:
在提升的 PowerShell 窗口中(所有用户):
Update-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease仅适用于当前用户帐户:
Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -RequiredVersion <PreviewVersion> -AllowPrerelease
完成后,输入“Y”以接受许可协议。
若要确认更新是否成功,请运行以下命令以检查已安装模块的版本信息:
Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement
有关语法和参数的详细信息,请参阅 Update-Module。
排查安装 Exchange Online PowerShell 模块的问题
收到以下错误之一:
当前版本的 PowerShellGet 不支持具有 PowerShellGetFormatVersion“<version>”的指定模块“ExchangeOnlineManagement”。 获取 PowerShellGet 模块的最新版本,以安装此模块“ExchangeOnlineManagement”。
警告:无法从 URI 下载 'https://go.microsoft.com/fwlink/?LinkID=627338&clcid=0x409“ 到””。
警告: 无法下载可用提供程序的列表。 请检查 Internet 连接。
将 PowerShellGet 模块的安装更新到最新版本,如 安装 PowerShellGet中所述。 在尝试再次更新 ExchangeOnlineManagement 模块之前,请务必关闭并重新打开 PowerShell 窗口。
你收到以下错误:
未找到指定搜索条件和模块名称“ExchangeOnlineManagement”的匹配项。 请尝试运行
Get-PSRepository以查看所有可用的已注册模块存储库。PowerShell 模块的默认存储库未设置为 PSGallery。 要修复此错误,请运行以下命令:
Register-PSRepository -Default自 2020 年 4 月开始,PowerShell 库仅支持使用 TLS 1.2 或更高版本的连接。 有关详细信息,请参阅 PowerShell 库 TLS 支持。
若要检查 Microsoft .NET Framework 中的当前设置,请在 Windows PowerShell 中运行以下命令:
[Net.ServicePointManager]::SecurityProtocol如 PowerShell 库 TLS 支持文章所述,若要暂时 将安全协议更改为 TLS 1.2 以安装 PowerShellGet 或 ExchangeOnlineManagement 模块,在安装模块之前在 Windows PowerShell 中运行以下命令:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12若要 Microsoft .NET Framework 4.x 或更高版本中永久启用强加密,请基于 Windows 体系结构运行以下命令之一:
x64:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'x86:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
有关详细信息,请参阅 SchUseStuseCrypto。
卸载 Exchange Online PowerShell 模块
若要查看当前安装的模块版本及其安装位置,请运行以下命令:
Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation
如果模块安装在 C:\Program Files\WindowsPowerShell\Modules 中,则为所有用户安装该模块。 如果模块安装在 Documents 文件夹中,则仅为当前用户帐户安装该模块。
若要卸载模块,请在以下某个环境中运行以下命令,具体取决于最初 (所有用户(仅针对当前用户帐户) )安装模块的方式:
在提升的 PowerShell 窗口中, (所有用户) 。
在普通 PowerShell 窗口中, (当前用户帐户) 。
Uninstall-Module -Name ExchangeOnlineManagement
有关语法和参数的详细信息,请参阅 Uninstall-Module。
Exchange Online PowerShell 模块中的属性和属性集
传统的Exchange Online cmdlet 返回所有可能的对象属性,包括许多空白或不感兴趣的属性。 这种行为会导致性能下降(服务器计算更多次并增加网络负载)。 你很少(如果有)需要 cmdlet 输出中属性的完整补充。
模块中的 Get-EXO* cmdlet 包含分类的输出属性。 我们将特定相关属性分类为 属性集,而不是将所有属性赋予同等重要性并返回它们。 这些属性集是 cmdlet 上两个或多个相关属性的存储桶。
最大且最常用的 Get-EXO* cmdlet 使用属性集:
在这些 cmdlet 中,以下参数控制属性集:
- PropertySets:此参数接受一个或多个可用的属性集名称,以逗号分隔。 Exchange Online PowerShell 模块 cmdlet 中的属性集中介绍了可用的属性集。
- Properties:此参数接受一个或多个属性名称,以逗号分隔。
可以在同一命令中一起使用 PropertySets 和 Properties 参数。
我们还包含一个 Minimum 属性集,其中包含 cmdlet 输出 () 标识属性的最小必需属性集。 最小属性集中的属性也Exchange Online PowerShell 模块 cmdlet 中的属性集中所述。
- 如果未使用 PropertySets 或 Properties 参数,则你将自动获得 Minimum 属性集中的属性。
- 如果使用 PropertySets 或 Properties 参数,则你将获得指定属性以及 Minimum 属性集中的属性。
无论哪种方式,cmdlet 输出包含的属性要少得多,并且返回结果的速度要快得多。
例如,连接到 Exchange Online PowerShell 后,以下示例仅返回前 10 个邮箱的 Minimum 属性集中的属性。
Get-EXOMailbox -ResultSize 10
相反,同一 Get-Mailbox 命令的输出将为前 10 个邮箱中的每个邮箱返回至少 230 个属性。
注意
尽管 PropertySets 参数接受值 All,但我们强烈建议不要使用此值来检索所有属性,因为它会降低命令速度并降低可靠性。 请始终使用 PropertySets 和 Properties 参数来检索你的方案所需的最少数量的属性。
有关模块中筛选的详细信息,请参阅 PowerShell 模块中的Exchange Online筛选器。
发行说明
除非另有说明,否则当前版本的 Exchange Online PowerShell 模块包含以前版本的所有功能。
当前版本
版本 3.9.0
- Connect-IPPSSession 上的新 EnableSearchOnlySession 开关,可启用连接到其他Microsoft 365 服务的某些电子数据展示 cmdlet 和相关 cmdlet。
历史版本
版本 3.8.0
在 Connect-IPPSSession 上新建 AccessToken 参数。
Get-VivaModuleFeature 现在返回有关 ParentFeature、ChildFeature 和 PolicyModes 的信息。 这些值表示Viva应用功能的父功能和子功能,以及未来策略的可用启用模式。
Add-VivaModuleFeaturePolicy 和 Update-VivaModuleFeaturePolicy cmdlet 上的新参数 IsUserOptedInByDefault 以及所有 *-VivaModuleFeaturePolicy cmdlet 中的相应属性值。 该值指示用户是按策略选择加入还是退出,前提是用户未设置首选项。
可以使用此参数在默认情况下选择退出受影响的用户时,在组织中保持启用该功能,从而有效地为这些用户软禁用该功能。
弃用了 Get-VivaFeatureCategory cmdlet、所有与类别相关的参数,以及 (CategoryId、 IsCategoryEnabled) 返回值。
版本 3.7.2
- Connect-ExchangeOnline cmdlet 上提供了 DisableWAM 开关,用于在遇到与 WAM 相关的连接错误时禁用 Web 帐户管理器 (WAM) 。
版本 3.7.1
- 向 Get-EXOMailbox 的输出添加了名为
ExoExchangeSecurityDescriptor的新属性,该属性类似于ExchangeSecurityDescriptorGet-Mailbox 输出中的 属性。 - 添加了新的 cmdlet 以支持 Viva Org Insights 委派功能:
- Add-VivaOrgInsightsDelegatedRole
- Get-VivaOrgInsightsDelegatedRole
- Remove-VivaOrgInsightsDelegatedRole
版本 3.7.0
- 集成 Web 帐户管理器 (身份验证流中的 WAM) ,以增强安全性。
- 默认情况下,不再加载Exchange Online PowerShell cmdlet 的命令行帮助。 使用 Connect-ExchangeOnline 命令中的 LoadCmdletHelp 开关,以便 Get-Help cmdlet 可以使用有关Exchange Online PowerShell cmdlet 的帮助。
- 修复了安全 & 合规性 PowerShell 中仅应用身份验证的连接问题。
版本 3.6.0
- Get-VivaModuleFeature 现在返回有关该功能支持为 (创建策略的标识类型的信息,例如用户、组或整个组织) 。
- 用于Viva功能访问管理的 Cmdlet 现在可处理持续访问评估 (CAE) 声明质询。
- 添加了 Microsoft.Graph 模块兼容性问题的修补程序。
版本 3.5.1
- Get-EXOMailboxPermission 和 Get-EXOMailbox 中的 Bug 修复。
- 模块已升级为在 .NET 8 上运行,并替换基于 .NET 6 的先前版本。
- Add-VivaModuleFeaturePolicy 中的增强功能。
版本 3.5.0
- 新的 Get-VivaFeatureCategory cmdlet。
- 在 Viva 功能访问管理 (VFAM) 中添加了对类别级别的策略作的支持。
- Get-VivaModuleFeaturePolicy 输出中的新 IsFeatureEnabledByDefault 属性。 此属性的值显示未创建组织或用户/组策略时用户的默认启用状态。
版本 3.4.0
- Connect-ExchangeOnline、Get-EXORecipientPermission 和 Get-EXOMailboxFolderPermission 中的 Bug 修复。
- Connect-ExchangeOnline 中的 SigningCertificate 参数现在支持约束语言模式 (CLM) 。
版本 3.3.0
- Connect-ExchangeOnline 上的 SkipLoadingCmdletHelp 参数支持跳过加载 cmdlet 帮助文件。
- 全局变量
EXO_LastExecutionStatus可用于检查运行的最后一个 cmdlet 的状态。 - Connect-ExchangeOnline 和 Connect-IPPSSession 中的 Bug 修复。
- Add-VivaModuleFeaturePolicy 和 Update-VivaModuleFeaturePolicy 上的 IsUserControlEnabled 参数,以支持通过策略启用用户控制,以便为载入到Viva功能访问管理的功能启用用户控制。
版本 3.2.0
- 新 cmdlet:
- Get-DefaultTenantBriefingConfig 和 Set-DefaultTenantBriefingConfig。
- Get-DefaultTenantMyAnalyticsFeatureConfig 和 Set-DefaultTenantMyAnalyticsFeatureConfig。
- Get-VivaModuleFeature、 Get-VivaModuleFeatureEnablement、 Add-VivaModuleFeaturePolicy、 Get-VivaModuleFeaturePolicy、 Remove-VivaModuleFeaturePolicy 和 Update-VivaModuleFeaturePolicy。
- 安全性 & 符合性 PowerShell 的 REST API 连接支持。
-
Get-ConnectionInformation 和 Disconnect-ExchangeOnline 上的 ConnectionId 参数:
- 获取特定 REST API 连接的连接信息。
- REST API 连接的选择性断开连接。
- Connect-ExchangeOnline 上的 SignCertificate 参数允许对格式化文件进行签名 (*。Format.ps1xml) 或脚本模块文件 (.psm1) Connect-ExchangeOnline 创建的临时模块中,该模块具有客户端证书,用于所有 PowerShell 执行策略。
- Connect-ExchangeOnline 中的 Bug 修复。
版本 3.1.0
- Connect-ExchangeOnline 中可用的 AccessToken 参数。
- Connect-ExchangeOnline 和 Get-ConnectionInformation 中的 Bug 修复。
- 使用 CertificateThumbprint 连接到安全性 & 合规性 PowerShell 的 Connect-IPPSSession 中的 Bug 修复。
版本 3.0.0 (预览版,称为 v2.0.6-PreviewX)
-
EXO V3 模块部分中的 REST API 连接中已介绍的功能:
- 基于证书的安全 & 合规性 PowerShell (版本 2.0.6-Preview5 或更高版本) 。
- 用于基于 REST 的连接的 Get-ConnectionInformation cmdlet (版本 2.0.6-Preview7 或更高版本) 。
- Connect-ExchangeOnline cmdlet 上的 SkipLoadingFormatData 开关,用于基于 REST 的连接 (版本 2.0.6-Preview8 或更高版本) 。
- 只要在命令中使用 AzureADAuthorizationEndpointUri 参数,DelegatedOrganization 参数就可以在 Connect-IPPSSession cmdlet 中工作。
- 在特定方案中提示确认的某些 cmdlet 不再这样做。 默认情况下,cmdlet 运行到完成。
- 从失败的 cmdlet 执行返回的错误格式略有修改。 异常现在包含更多数据 (例如,异常类型) ,而
FullyQualifiedErrorId不包含FailureCategory。 错误的格式有待进一步修改。
版本 2.0.5
新的 Get-OwnerlessGroupPolicy 和 Set-OwnerlessGroupPolicy cmdlet 用于管理无所有者Microsoft 365 组。
注意
尽管 cmdlet 在模块中可用,但该功能仅对个人预览版成员可用。
新的 Get-VivaInsightsSettings 和 Set-VivaInsightsSettings cmdlet,用于控制用户对 Viva Insights 中 Headspace 功能的访问。
版本 2.0.4
Windows、Linux 和 Apple macOS 中正式支持 PowerShell 7,如本文Exchange Online PowerShell 模块的先决条件部分所述。
PowerShell 7 中的模块支持基于浏览器的单一登录 (SSO) 和其他登录方法。 有关详细信息,请参阅 PowerShell 7 独占连接方法。
Get-UserAnalyticsConfig 和 Set-UserAnalyticsConfig cmdlet 已替换为 Get-MyAnalyticsConfig 和 Set-MyAnalyticsConfig。 此外,还可以在功能级别配置访问权限。 有关详细信息,请参阅配置 MyAnalytics。
所有基于用户的身份验证中的实时策略和安全执行。 模块中启用了持续访问评估 (CAE) 。 请参阅此处有关 CAE 的详细信息。
LastUserActionTime 和 LastInteractionTime 属性已经在 Get-EXOMailboxStatistics cmdlet 的输出中可用。
互动性登录流程现在使用更加安全的方法,通过安全回复 URL 来获取访问令牌。
版本 2.0.3
- “基于证书的身份验证”的常规可用性 (CBA),支持在无人参与的脚本或后台自动化方案中使用新式验证。 可用的证书存储位置如下:
- Azure 密钥值( 证书)参数中的远程。 此选项仅在运行时获取证书,从而增强了安全性。
- CurrentUser 或 LocalMachine 证书存储中的本地 ( CertificateThumbprint 参数)。
- 导出的证书文件中的本地( CertificateFilePath 和 CertificatePassword 参数)。 有关详细信息,请参阅 Exchange Online PowerShell 模块中针对无人参与脚本的 Connect-ExchangeOnline 和仅限应用身份验证中的参数说明。
- 在单个 PowerShell 窗口中同时连接到 Exchange Online PowerShell 和安全合规 PowerShell。
- 新增的 CommandName 参数可用于指定和限制在会话中导入的 Exchange Online PowerShell cmdlet。 此选项降低了高利用率 PowerShell 应用程序的内存需求量。
- 现在,EXOMailboxFolderPermission 支持 Identity参数中的 ExternalDirectoryObjectID。
- 已优化首次 V2 cmdlet 呼叫的延迟。 实验室结果显示,第一次调用延迟从 8 秒减少到大约 1 秒。 实际结果取决于 cmdlet 结果大小和组织环境。
版本 1.0.1
- EXO V2 模块的常规可用性 (GA) 版本。 它稳定且可随时在生产环境中使用。
- Get-ExoMobileDeviceStatistics cmdlet 现在支持 Identity 参数。
- 在某些情况下,由于自动重新连接逻辑中的 bug,脚本运行了大约 50 分钟并引发“找不到 Cmdlet”错误,提高了会话自动重新连接的可靠性。
- 修复了两个常用“User”和“MailboxFolderUser”属性的数据类型问题,以便轻松地迁移脚本。
- 增强了对筛选器的支持,现在另外支持四个运算符:EndsWith、Contains、Not、NotLike。 检查 Exchange Online PowerShell 模块中的筛选器,了解筛选器中不支持的属性。
版本 0.4578.0
- 添加了对使用 Set-UserBriefingConfig 和 Get-UserBriefingConfig cmdlet 在用户级别为组织配置简报电子邮件的支持。
- 支持使用 Disconnect-ExchangeOnline cmdlet 进行会话清理。 此 cmdlet 是
Get-PSSession | Remove-PSSession的 V2 等效项。 除了清理会话对象和本地文件之外,它还会从缓存中删除用于根据 V2 cmdlet 进行身份验证的访问令牌。 - 现在,你可以将
FolderId用作 Get-EXOMailboxFolderPermission 中的标识参数。 可使用 Get-MailboxFolder 获取FolderId值。 例如:Get-MailboxFolderPermission -Identity <UPN>:<Folder-Path>Get-MailboxFolderPermission -Identity <UPN>:\<Folder-Id> - 改进了 Get-EXOMailboxStatistics 的可靠性,因为解决了导致失败的某些请求路由错误。
- 优化了通过重用现有模块(而不是每次导入会话时创建新会话)创建的新会话的内存使用率。
版本 0.4368.1
- 已使用 Connect-IPPSSession cmdlet 增加了对安全与合规 PowerShell cmdlet 的支持。
- 使用 ShowBanner 切换 (
-ShowBanner:$false) 隐藏公告横幅现已可用。 - 向客户端异常终止 cmdlet 执行。
- 远程 PowerShell 包含各种复杂的数据类型,这些数据类型在 EXO cmdlet 中有意不受支持,以提高性能。 解决了远程 PowerShell cmdlet 和 V2 cmdlet 之间的非复杂数据类型差异,以便无缝迁移管理脚本。
版本 0.3582.0
- 会话创建期间对前缀的支持:
- 一次只能创建一个包含前缀 cmdlet 的会话。
- EXO V2 cmdlet 没有前缀,因为它们已有前缀 EXO,因此不要用作
EXO前缀。
- 即使在客户端计算机上禁用了 WinRM 基本身份验证,也要使用 EXO V2 cmdlet。 远程 PowerShell 连接需要 WinRM 基本身份验证,如果 WinRM 中禁用了基本身份验证,则远程 PowerShell cmdlet 不可用。
- V2 cmdlet 的标识参数现在支持名称和别名。 使用别名或名称会降低 V2 cmdlet 的性能,因此不建议使用它们。
- 解决了以下问题:V2 cmdlet 返回的属性的数据类型不同于远程 PowerShell cmdlet。 我们仍然有几个具有不同数据类型的属性,我们计划在未来几个月内处理它们。
- 修复了 bug:使用凭据或 UserPrincipalName 调用 Connect-ExchangeOnline 时频繁会话重新连接问题
版本 0.3555.1
- 修复了以下 bug:由于身份验证问题,管道 cmdlet 失败,并出现以下错误:
无法调用管道,因为运行空间未处于“已打开”状态。 运行空间的当前状态为“Closed”。
版本 0.3527.4
- 已更新 Get-Help 内容。
- 修复了 Get-Help 中 联机 参数重定向到错误代码为 400 的不存在页面的问题。
版本 0.3527.3
- 添加了对使用委派流管理不同组织的 Exchange 的支持。
- 在单个 PowerShell 窗口中与其他 PowerShell 模块协同工作。
- 增加了对位置参数的支持。
- “日期时间”字段现在支持客户端区域设置。
- Bug 修复:Connect-ExchangeOnline 期间传递的PSCredential 为空。
- Bug 修复:筛选器包含 $null 时发生客户端模块错误。
- 在 EXO V2 模块内部创建的会话现在具有名称(命名模式:ExchangeOnlineInternalSession_%SomeNumber%)。
- Bug 修复:由于令牌过期和会话处于空闲状态之间的时间差,远程 PowerShell cmdlet 间歇性失败。
- 主要安全更新。
- Bug 修复和增强功能。