关于 Exchange Online PowerShell 模块
Exchange Online PowerShell 模块使用新式身份验证,使用或不使用多重身份验证 (MFA) 连接到 Microsoft 365 中的所有与 Exchange 相关的 PowerShell 环境:Exchange Online PowerShell、安全性 & 符合性 PowerShell 和独立Exchange Online Protection (PowerShell) EOP。
有关使用 模块的连接说明,请参阅以下文章:
- 连接到 Exchange Online PowerShell
- 连接到安全与合规 PowerShell
- 连接到 Exchange Online Protection PowerShell
- Exchange Online PowerShell 和安全 & 合规性 PowerShell 中无人参与的脚本的仅限应用身份验证
- 使用 Azure 托管标识连接到 Exchange Online PowerShell
- 使用 C# 连接到 Exchange Online PowerShell
本文的其余部分将介绍模块的工作方式、如何安装和维护模块,以及模块中提供的优化 Exchange Online cmdlet。
提示
版本 3.0.0 及更高版本 (2022) 称为 Exchange Online PowerShell V3 模块, (缩写为 EXO V3 模块) 。 版本 2.0.5 及更低版本 (2021) 称为 Exchange Online PowerShell V2 模块, (缩写为 EXO V2 模块) 。
EXO V3 模块中的 REST API 连接
Exchange Online PowerShell 和安全性 & 合规性 PowerShell 现在对所有 cmdlet 使用 REST API 连接:
- Exchange Online PowerShell:EXO V3 模块 v3.0.0 或更高版本。
- 安全性 & 合规性 PowerShell:EXO V3 模块 v3.2.0 或更高版本。
REST API 连接需要 PowerShellGet 和 PackageManagement 模块。 有关详细信息,请参阅 PowerShellGet for 基于 REST 的连接在 Windows 中。
与历史对应项相比,REST API 连接中的 Cmdlet 具有以下优势:
- 更安全:内置对新式身份验证的支持,不依赖于远程 PowerShell 会话。 客户端计算机上的 PowerShell 不需要 WinRM 中的基本身份验证。
-
更可靠:暂时性故障使用内置重试,从而最大程度地减少故障或延迟。 例如:
- 网络延迟导致的故障。
- 由于需要很长时间才能完成的大型查询而导致延迟。
- 更好的性能:REST API 连接可避免设置 PowerShell 运行空间。
下表介绍了 REST API 连接中 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 和 Security & Compliance PowerShell 中已弃用远程 PowerShell) 连接 (基本身份验证。 有关详细信息,请参阅 此处 和 此处。
Exchange Online PowerShell 中的一些 cmdlet 已使用 REST API 连接中的试验性 UseCustomRouting 开关进行了更新。 使用此开关将命令直接路由到所需的邮箱服务器,并且可能会提高整体性能。 试验性地使用 UseCustomRouting 开关。
使用 UseCustomRouting 开关时,需要使用以下值来标识邮箱:
- 用户主体名称 (UPN)
- 电子邮件地址
- 邮箱 GUID
UseCustomRouting 开关仅在 REST API 连接中的以下Exchange Online PowerShell cmdlet 上可用:
- 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 获取有关Exchange Online PowerShell 和安全性 & 合规性 PowerShell 的 REST API 连接的信息。 此 cmdlet 是必需的,因为 Windows PowerShell 中的 Get-PSSession cmdlet 不会返回 REST API 连接的信息。
下表介绍了可以使用 Get-ConnectionInformation 的方案:
应用场景 预期输出 在 REST API 连接的 Connect-ExchangeOnline 或 Connect-IPPSSession 命令之后运行。 返回一个连接信息对象。 在 REST API 连接的多个 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:
Cmdlet | Comments |
---|---|
Get-DefaultTenantBriefingConfig | 在 v3.2.0 或更高版本中可用。 |
Set-DefaultTenantBriefingConfig | 在 v3.2.0 或更高版本中可用。 |
Get-DefaultTenantMyAnalyticsFeatureConfig | 在 v3.2.0 或更高版本中可用。 |
Set-DefaultTenantMyAnalyticsFeatureConfig | 在 v3.2.0 或更高版本中可用。 |
Get-MyAnalyticsFeatureConfig | 在 v2.0.4 或更高版本中可用。 |
Set-MyAnalyticsFeatureConfig | 在 v2.0.4 或更高版本中可用。 |
Get-UserBriefingConfig | 替换为 Get-MyAnalyticsFeatureConfig。 |
Set-UserBriefingConfig | 替换为 Set-MyAnalyticsFeatureConfig。 |
Get-VivaInsightsSettings | 在 v2.0.5 或更高版本中可用。 |
Set-VivaInsightsSettings | 在 v2.0.5 或更高版本中可用。 |
Get-VivaModuleFeature | 在 v3.2.0 或更高版本中可用。 |
Get-VivaModuleFeatureEnablement | 在 v3.2.0 或更高版本中可用。 |
Add-VivaModuleFeaturePolicy | 在 v3.2.0 或更高版本中可用。 |
Get-VivaModuleFeaturePolicy | 在 v3.2.0 或更高版本中可用。 |
Remove-VivaModuleFeaturePolicy | 在 v3.2.0 或更高版本中可用。 |
Update-VivaModuleFeaturePolicy | 在 v3.2.0 或更高版本中可用。 |
安装和维护 Exchange Online PowerShell 模块
可从 PowerShell 库 https://www.powershellgallery.com/packages/ExchangeOnlineManagement/下载模块。
本部分中的过程说明如何安装、更新和卸载模块。
Exchange Online PowerShell 模块支持的操作系统
Windows、Linux 和 Apple macOS 上的 PowerShell 7 正式支持最新版本的模块。
具体而言,PowerShell 7.0.3 或更高版本 支持版本 2.0.4 或更高版本。
有关 PowerShell 7 的详细信息,请参阅 PowerShell 7.0 公告。
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 模块。
注意
如果从代理服务器后面的网络连接到 Exchange Online PowerShell,则 EXO V2 模块 (v2.0.5 或更低版本) 在 Linux 中不起作用。 需要使用 Linux 中的 EXO V3 模块 (v3.0.0 或更高版本) 从代理服务器后面的网络进行连接。
Windows
Windows PowerShell 5.1 中支持模块的所有版本。
Windows 上的 PowerShell 7 需要版本 2.0.4 或更高版本。
模块 2.0.5 或更高版本需要 Microsoft .NET Framework 4.7.2 或更高版本才能连接。 否则,会出现错误 System.Runtime.InteropServices.OSPlatform
。 在当前版本的 Windows 中,此要求不应成为问题。 有关支持 .NET Framework 4.7.2 的 Windows 版本的详细信息,请参阅此文。
以下列表介绍了旧版 Windows 中的Windows PowerShell要求和模块支持:
Windows 8.1¹
Windows Server 2012或Windows Server 2012 R2¹
Windows 7 Service Pack 1 (SP1) ² ー ⁴
Windows Server 2008 R2 SP1² ² ⁴
¹ 此版本的 Windows 上的 PowerShell 7 需要 Windows 10 通用 C 运行时 (CRT) 。
² 对此版本的 Windows 的支持已结束,现在仅在 Azure 虚拟机中受支持。
2. 此版本的 Windows 仅支持模块的 v2.0.3 或更低版本。
此版本的 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 中启用基本身份验证
重要
如本部分所述,REST API 连接不需要在 WinRM 中进行基本身份验证。 如本文前面所述,基本身份验证 (远程 PowerShell) 访问Exchange Online PowerShell 和安全 & 符合性 PowerShell 已弃用。 本部分中的信息出于历史目的而保留。
对于不使用 REST API (的远程 PowerShell 连接) ,WinRM 需要允许基本身份验证。 我们不会发送用户名和密码组合。 发送会话的 OAuth 令牌需要基本身份验证 标头 ,因为 WinRM 的客户端实现不支持 OAuth。
要验证是否已为 WinRM 启用基本身份验证,请在 命令提示符 中或 Windows PowerShell 中运行以下命令:
注意
以下命令要求启用 WinRM。 若要启用 WinRM,请运行以下命令: winrm quickconfig
。
winrm get winrm/config/client/auth
如果看不到值 Basic = true
,则需要运行以下命令之 一,以便为 WinRM 启用基本身份验证:
在命令提示符中:
winrm set winrm/config/client/auth @{Basic="true"}
在 Windows PowerShell 中:
winrm set winrm/config/client/auth '@{Basic="true"}'
在要更改注册表的 Windows PowerShell 中:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client' -Name 'AllowBasic' -Type DWord -Value '1'
如果禁用了 WinRM 的基本身份验证,则尝试使用基本身份验证 (远程 PowerShell) 连接进行连接时,会出现以下错误之一:
WinRM 客户端无法处理该请求。 客户端配置中当前已禁用基本身份验证。 更改客户端配置,然后重试请求。
使用 OAuth 创建 Powershell 会话失败。
Windows 中 REST API 连接的 PowerShellGet
Windows 中的 REST API 连接需要 PowerShellGet 模块,并且根据依赖项需要 PackageManagement 模块。 这些模块的注意事项更多的是 PowerShell 5.1 而不是 PowerShell 7,但所有版本的 PowerShell 都受益于安装最新版本的模块。 有关安装和更新说明,请参阅 在 Windows 上安装 PowerShellGet。
提示
Beta 版 PackageManagement 或 PowerShellGet 模块可能会导致连接问题。 如果遇到连接问题,请运行以下命令验证是否未安装 Beta 版本的模块: Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions
。
如果在尝试创建 REST API 连接时未安装 PowerShellGet,则尝试连接时会出现以下错误:
找不到 cmdlet Update-Manifest
安装 Exchange Online PowerShell 模块
若要首次安装模块,请完成以下步骤:
按照安装 PowerShellGet 中的说明安装或更新 PowerShellGet 模块。
关闭并重新打开窗口。
现在,可以使用 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中所述。 请务必关闭并重新打开提升的 PowerShell 窗口,然后再次尝试更新 ExchangeOnlineManagement 模块。
你收到以下错误:
未找到指定搜索条件和模块名称“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.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,用于管理 365 个组的无所有者Microsoft。
注意
尽管 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 参数。
- 在某些情况下,如果脚本运行时间为大约 50 分钟,并且由于自动重新连接逻辑中的 bug 而引发了“未找到 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 修复和增强功能。