自 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.1 (2024 年 7 月) 或更高版本需要 PowerShell 7 版本 7.4.0 (2023 年 11 月) 或更高版本。 早期版本的 PowerShell 7 可能会遇到兼容性问题,因为缺少 .NET 8.0 程序集, (v3.5.1 基于 .NET 8.0) 。
- 模块版本 2.0.4 (2021 年 2 月) 到 3.5.0 (202) 4 年 5 月 (2020 年 7 月 7.0.3 (2020 年 7 月) 或更高版本。
有关 PowerShell 7 的详细信息,请参阅 什么是 PowerShell?。
提示
Windows PowerShell 5.1 中支持并兼容模块的所有版本。
Apple macOS
以下版本的 macOS 支持该模块:
- macOS 11 Big Sur 或更高
- macOS 10.15 Catalina
- macOS 10.14 Mojave
关于在 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
以下 Linux 发行版中正式支持该模块:
- Ubuntu 24.04 LTS
- Ubuntu 20.04 LTS
- 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 模块。
注意
如果从代理服务器后面的网络连接到 Linux 上的 Exchange Online PowerShell,则需要使用 exO V3 模块 (v3.0.0 或更高版本) 。
Windows
Windows PowerShell 5.1:
- 支持模块的所有版本。
- 版本 2.0.5 (2021 年 5 月) 或更高版本的模块需要 Microsoft .NET Framework 4.7.2 或更高版本才能连接。 否则,会出现错误
System.Runtime.InteropServices.OSPlatform
。 有关支持 .NET Framework 4.7.2 的 Windows 版本的详细信息,请参阅此文。
提示
当前版本的 Windows 包括所需版本的 .NET 和/或.NET Framework,因此无需安装 .NET 或 .NET Framework即可在 Windows PowerShell 5.1 中使用模块。
PowerShell 7:
- 模块版本 3.5.1 (2024 年 7 月) 或更高版本需要 PowerShell 7 版本 7.4.0 (2023 年 11 月) 或更高版本。 早期版本的 PowerShell 7 可能会遇到兼容性问题,因为缺少 .NET 8.0 程序集, (v3.5.1 基于 .NET 8.0) 。
- 模块版本 2.0.4 (2021 年 2 月) 到 3.5.0 (202) 4 年 5 月 (2020 年 7 月 7.0.3 (2020 年 7 月) 或更高版本。
以下列表介绍了旧版 Windows 中的Windows PowerShell要求和模块支持:
- Windows 10¹
- Windows 8.1² л
- Windows Server 2012或Windows Server 2012 R2² ー
- Windows 7 Service Pack 1 (SP1) ² ⁴ ⁵
- Windows Server 2008 R2 SP1² ⁴ ⁵
2016 年 8 月起的 Windows 10 周年更新 (版本 1607) 是与) Windows PowerShell 5.1) 中模块的 .NET Framework 4.7.2 (v2.0.5 或更高版本可靠地兼容的 Windows 10 的最早版本。
² 此版本的 Windows 支持已结束。 此版本的 Windows 仅在 Azure 虚拟机中受支持。
ー 此版本的 Windows 上的 PowerShell 7 需要兼容版本的 .NET Core 或 .NET 运行时,Windows 10通用 C 运行时 (CRT) 。 自 2024) 年 8 月起,此版本的 Windows 上最后一个正式支持的 PowerShell 7 版本是 7.2 (7.2.19,这意味着 PowerShell 7 中最后受支持的模块版本是 v3.5.0 (2024 年 5 月) 。
⁴ 此 Windows 版本支持的模块最新版本是 v2.0.3 (2020 年 9 月) 。
此版本的 Windows 上的 ⁵ Windows PowerShell 5.1 需要 .NET Framework 4.5 或更高版本和 Windows Management Framework 5.1。 有关详细信息,请参阅 Windows Management Framework 5.1。
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 中的基本身份验证。
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.8.0
支持使用 Connect-IPPSSession 提供访问令牌。
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
的新属性,该属性类似于ExchangeSecurityDescriptor
Get-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 修复和增强功能。