关于 Exchange Online PowerShell 模块

Exchange Online PowerShell 模块使用新式身份验证,无论是否使用多重身份验证 (MFA) 连接到 Microsoft 365 中的所有与 Exchange 相关的 PowerShell 环境:Exchange Online PowerShell、安全性 & 合规性 PowerShell 和独立Exchange Online Protection (PowerShell) EOP。

有关使用 模块的连接说明,请参阅以下文章:

本文的其余部分将介绍模块的工作方式、如何安装和维护模块,以及模块中提供的优化 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 都由基于 EXO V3 模块版本的 REST API 提供支持:

  • Exchange Online PowerShell:v3.0.0 或更高版本。
  • 安全性 & 合规性 PowerShell:v3.2.0 或更高版本。

在 Exchange Online PowerShell 和安全 & 合规性 PowerShell 中,默认情况下使用 REST API 连接,并且需要 PowerShellGet 和 PackageManagement 模块。 有关详细信息,请参阅 PowerShellGet for 基于 REST 的连接在 Windows 中

与历史对应项相比,REST API cmdlet 具有以下优势:

  • 更安全:REST API cmdlet 具有对新式身份验证的内置支持,并且不依赖于远程 PowerShell 会话,因此客户端计算机上的 PowerShell 不需要 WinRM 中的基本身份验证
  • 更可靠:REST API cmdlet 通过内置重试处理暂时性故障,从而最大程度地减少故障或延迟。 例如:
    • 网络延迟导致的故障。
    • 由于需要很长时间才能完成的大型查询而导致延迟。
  • 更好的性能:连接可避免设置 PowerShell 运行空间。

下表介绍了 REST API cmdlet 的优点:

  远程 PowerShell cmdlet Get-EXO* cmdlet REST API cmdlet
安全性 最不安全 高度安全 高度安全
性能 性能低 高性能 中等性能
可靠性 最不可靠 高度可靠 高度可靠
功能 所有可用的参数和输出属性 可用的有限参数和输出属性 所有可用的参数和输出属性

REST API cmdlet 具有相同的 cmdlet 名称,其工作方式与其远程 PowerShell 等效项类似,因此无需更新任何脚本。

提示

Invoke-Command cmdlet 在 REST API 连接中不起作用。 有关替代方法,请参阅 REST API 连接中 Invoke-Command 方案的解决方法

Exchange Online PowerShell 和安全 & 符合性 PowerShell 中弃用了远程 PowerShell) 连接 (基本身份验证。 有关详细信息,请参阅 此处此处

Exchange Online PowerShell 中的一些 REST API cmdlet 已使用实验性 UseCustomRouting 开关进行更新。 使用此开关将命令直接路由到所需的邮箱服务器,并且可能会提高整体性能。

  • 使用 UseCustomRouting 开关时,需要使用以下值来标识邮箱:

    • 用户主体名称 (UPN)
    • 电子邮件地址
    • 邮箱 GUID
  • UseCustomRouting 开关仅适用于 Exchange Online PowerShell 中的以下 REST API 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

    实验性地使用 UseCustomRouting 开关并 报告遇到的任何问题

  • 使用 Get-ConnectionInformation cmdlet 获取有关与 powerShell 和 Security & Compliance PowerShell Exchange Online基于 REST 的连接的信息。 此 cmdlet 是必需的,因为 Windows PowerShell 中的 Get-PSSession cmdlet 不会返回基于 REST 的连接的信息。

    下表介绍了可以使用 Get-ConnectionInformation 的方案:

    应用场景 预期输出
    Connect-ExchangeOnlineConnect-IPPSSession 命令之前运行。 不返回任何内容。
    在 REST API 模式下连接的 Connect-ExchangeOnlineConnect-IPPSSession 命令后运行。 返回一个连接信息对象。
    在多个基于 REST 的 Connect-ExchangeOnlineConnect-IPPSSession 命令之后运行。 返回连接信息对象的集合。
  • 使用 Connect-ExchangeOnline cmdlet 上的 SkipLoadingFormatData 开关可避免加载格式数据并更快地运行 Connect-ExchangeOnline 命令。

  • REST API 支持的 Cmdlet 超时为 15 分钟,这可能会影响批量操作。 例如,用于更新通讯组 10000 个成员的以下 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 和问题

注意

对于正式发布 (正式发布) 模块版本,请针对遇到的任何问题开具支持票证。 对于模块的预览版,请使用本部分中所述的电子邮件地址。 还可以使用电子邮件地址获取模块的正式版和预览版的反馈和建议。

exocmdletpreview[at]service[dot]microsoft[dot]com 报告问题时,请确保在电子邮件中包括日志文件。 若要生成日志文件,请将存储日志文件>的路径替换为<所需的输出文件夹,并运行以下命令:

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path to store log file> -LogLevel All

注意

在单个 PowerShell 会话或脚本中频繁使用 Connect-ExchangeOnlineDisconnect-ExchangeOnline cmdlet 可能会导致内存泄漏。 避免此问题的最佳方法是在 Connect-ExchangeOnline cmdlet 上使用 CommandName 参数来限制会话中使用的 cmdlet。

Exchange Online PowerShell 模块中的 Cmdlet

该模块的所有版本都包含 9 个适用于 Exchange Online PowerShell 的 Get-EXO* 专用 cmdlet,这些 cmdlet 针对批量数据检索方案中的速度进行优化, (成千上万个对象) 。 下表列出了仅在模块中可用的改进Exchange Online PowerShell cmdlet:

EXO 模块 cmdlet 较旧相关 cmdlet
Get-EXOMailbox Get-Mailbox
Get-EXORecipient Get-Recipient
Get-EXOCasMailbox Get-CASMailbox
Get-EXOMailboxPermission Get-MailboxPermission
Get-EXORecipientPermission Get-RecipientPermission
Get-EXOMailboxStatistics Get-MailboxStatistics
Get-EXOMailboxFolderStatistics Get-MailboxFolderStatistics
Get-EXOMailboxFolderPermission Get-MailboxFolderPermission
Get-EXOMobileDeviceStatistics Get-MobileDeviceStatistics

注意

如果在同一窗口中打开多个连接到 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 或更高版本中可用。

下表列出了模块中的杂项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 后,请执行以下步骤:

  1. 以超级用户运行 PowerShell: sudo pwsh

  2. 在 PowerShell 超级用户会话中,运行以下命令:

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    如果系统提示,接受 PSGallery 作为 cmdlet 的源。

现在,可以执行常规 PowerShell 先决条件安装 Exchange Online PowerShell 模块

Linux

以下 Linux 发行版中正式支持该模块:

  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS

如果在 Linux 的其他发行版中使用模块时遇到问题, 请报告任何问题

关于在 Linux 上安装 PowerShell 7 的说明,请参阅在 Linux 上安装 PowerShell

安装 PowerShell 7 后,请执行以下步骤:

  1. 以超级用户运行 PowerShell: sudo pwsh

  2. 在 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 的连接不需要在 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 的连接的 PowerShellGet

Windows 中基于 REST 的连接需要 PowerShellGet 模块,并且根据依赖项需要 PackageManagement 模块。 这些模块的注意事项更多的是 PowerShell 5.1 而不是 PowerShell 7,但所有版本的 PowerShell 都受益于安装最新版本的模块。 有关安装和更新说明,请参阅 在 Windows 上安装 PowerShellGet

注意

Beta 版 PackageManagement 或 PowerShellGet 模块可能会导致连接问题。 如果遇到连接问题,请运行以下命令验证是否未安装 Beta 版本的模块: Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions

如果在尝试创建基于 REST 的连接时未安装 PowerShellGet,则尝试连接时会出现以下错误:

找不到 cmdlet Update-Manifest

安装 Exchange Online PowerShell 模块

若要首次安装模块,请完成以下步骤:

  1. 按照安装 PowerShellGet 中的说明安装或更新 PowerShellGet 模块。

  2. 关闭并重新打开窗口。

  3. 现在,可以使用 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 模块

如果计算机上已安装模块,则可以使用本部分中的过程更新模块。

  1. 若要查看当前安装的模块版本及其安装位置,请运行以下命令:

    Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation
    

    如果模块安装在 C:\Program Files\WindowsPowerShell\Modules 中,则会为所有用户安装该模块。 如果模块安装在 Documents 文件夹中,则仅针对当前用户帐户安装该模块。

  2. 可以使用 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”以接受许可协议。

  3. 若要确认更新是否成功,请运行以下命令以检查已安装模块的版本信息:

    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 模块。

  • 自 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

  • 你收到以下错误:

    未找到指定搜索条件和模块名称“ExchangeOnlineManagement”的匹配项。 请尝试运行 Get-PSRepository 以查看所有可用的已注册模块存储库。

    PowerShell 模块的默认存储库未设置为 PSGallery。 要修复此错误,请运行以下命令:

    Register-PSRepository -Default
    

卸载 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:此参数接受一个或多个属性名称,以逗号分隔。

可以在同一命令中一起使用 PropertySetsProperties 参数。

此外,我们还包括一个 Minimum 属性集,其中包括 cmdlet 输出的最低所需属性集(例如 identity 属性)。 最小属性集中的属性也Exchange Online PowerShell 模块 cmdlet 中的属性集中所述。

  • 如果未使用 PropertySetsProperties 参数,则你将自动获得 Minimum 属性集中的属性。
  • 如果使用 PropertySetsProperties 参数,则你将获得指定属性以及 Minimum 属性集中的属性。

无论哪种方式,cmdlet 输出包含的属性要少得多,并且返回这些结果所需的时间要快得多。

例如,连接到 Exchange Online PowerShell 后,以下示例仅返回前十个邮箱的 Minimum 属性集中的属性。

Get-EXOMailbox -ResultSize 10

相反,相同 Get-Mailbox 命令的输出将为前十个邮箱中的每一个邮箱返回至少 230 个属性。

注意

尽管 PropertySets 参数接受值 All,但我们强烈建议不要使用此值来检索所有属性,因为它会降低命令速度并降低可靠性。 请始终使用 PropertySetsProperties 参数来检索你的方案所需的最少数量的属性。

有关模块中筛选的详细信息,请参阅 PowerShell 模块中的Exchange Online筛选器

发行说明

除非另有说明,否则当前版本的 Exchange Online PowerShell 模块包含以前版本的所有功能。

当前版本

版本 3.4.0

  • Connect-ExchangeOnlineGet-EXORecipientPermissionGet-EXOMailboxFolderPermission 中的 Bug 修复。
  • Connect-ExchangeOnline 中的 SigningCertificate 参数现在支持约束语言模式 (CLM)

历史版本

版本 3.3.0

  • Connect-ExchangeOnline 上的 SkipLoadingCmdletHelp 参数支持跳过加载 cmdlet 帮助文件。
  • 全局变量EXO_LastExecutionStatus可用于检查运行的最后一个 cmdlet 的状态。
  • Connect-ExchangeOnlineConnect-IPPSSession 中的 Bug 修复。
  • Add-VivaModuleFeaturePolicyUpdate-VivaModuleFeaturePolicy 上的 IsUserControlEnabled 参数,以支持通过策略启用用户控制,以便为载入到Viva功能访问管理的功能启用用户控制。

版本 3.2.0

  • 新 cmdlet:
    • Get-DefaultTenantBriefingConfigSet-DefaultTenantBriefingConfig
    • Get-DefaultTenantMyAnalyticsFeatureConfigSet-DefaultTenantMyAnalyticsFeatureConfig
    • Get-VivaModuleFeatureGet-VivaModuleFeatureEnablementAdd-VivaModuleFeaturePolicyGet-VivaModuleFeaturePolicyRemove-VivaModuleFeaturePolicyUpdate-VivaModuleFeaturePolicy
  • 安全 & 合规性中心 PowerShell 的 REST API 连接支持。
  • Get-ConnectionInformationDisconnect-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-ExchangeOnlineGet-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-OwnerlessGroupPolicySet-OwnerlessGroupPolicy cmdlet 用于管理无所有者 Microsoft 365 组。

    注意

    尽管 cmdlet 在模块中可用,但该功能仅对个人预览版成员可用。

  • 新的 Get-VivaInsightsSettingsSet-VivaInsightsSettings cmdlet,用于控制用户对 Viva Insights 中 Headspace 功能的访问。

版本 2.0.4

  • Windows、Linux 和 Apple macOS 中正式支持 PowerShell 7,如本文Exchange Online PowerShell 模块的先决条件部分所述。

  • PowerShell 7 中的模块支持基于浏览器的单一登录 (SSO) 和其他登录方法。 有关详细信息,请参阅 PowerShell 7 独占连接方法

  • Get-UserAnalyticsConfigSet-UserAnalyticsConfig cmdlets 已经由 Get-MyAnalyticsConfigSet-MyAnalyticsConfig 替代。另外,你可以在功能级别配置访问权限。 有关详细信息,请参阅配置 MyAnalytics

  • 所有基于用户的身份验证中的实时策略和安全执行。 模块中已启用持续访问评估 (CAE) 。 请参阅此处有关 CAE 的详细信息。

  • LastUserActionTimeLastInteractionTime 属性已经在 Get-EXOMailboxStatistics cmdlet 的输出中可用。

  • 互动性登录流程现在使用更加安全的方法,通过安全回复 URL 来获取访问令牌。

版本 2.0.3

  • “基于证书的身份验证”的常规可用性 (CBA),支持在无人参与的脚本或后台自动化方案中使用新式验证。 可用的证书存储位置如下:
    • Azure 密钥值( 证书)参数中的远程。 此选项仅在运行时获取证书,从而增强了安全性。
    • CurrentUser 或 LocalMachine 证书存储中的本地 ( CertificateThumbprint 参数)。
    • 导出的证书文件中的本地( CertificateFilePathCertificatePassword 参数)。 有关详细信息,请参阅 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-UserBriefingConfigGet-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

  • 会话创建期间对前缀的支持:
    • 一次只能创建 1 个包含前缀 cmdlet 的会话。
    • EXO V2 cmdlet 没有前缀,因为它们已有前缀 EXO,因此不要用作 EXO 前缀。
  • 即使在客户端计算机上禁用了 WinRM 基本身份验证,也要使用 EXO V2 cmdlet。 请注意,远程 PowerShell cmdlet 需要 WinRM 基本身份验证,如果禁用该身份验证,这些 cmdlet 将不可用。
  • V2 cmdlet 的 Identity 参数现在也支持 Name 和 Alias。 请注意,使用 Alias 或 Name 会降低 V2 cmdlet 的性能,因此不建议使用它们。
  • 解决了以下问题:V2 cmdlet 返回的属性的数据类型不同于远程 PowerShell cmdlet。 我们仍然有少数几个属性具有不同数据类型,并且我们计划在接下来的几个月中处理它们。
  • 修复了以下 bug:使用 Credentials 或 UserPrincipalName 调用 Connect-ExchangeOnline 时,发生频繁会话重新连接问题

版本 0.3555.1

  • 修复了以下 bug:由于身份验证问题,管道 cmdlet 失败,并出现以下错误:

    无法调用管道,因为运行空间未处于“已打开”状态。 运行空间的当前状态为“Closed”。

版本 0.3527.4

  • 已更新 Get-Help 内容。
  • 修复了 Get-help 中的一个问题:联机 参数正在重定向到不存在的页面,错误代码为 400。

版本 0.3527.3

  • 增加了对使用委派流程管理其他租户的 Exchange 的支持。
  • 在单个 PS 窗口中与其他 PowerShell 模块协同工作。
  • 增加了对位置参数的支持。
  • “日期时间”字段现在支持客户端区域设置。
  • Bug 修复:Connect-ExchangeOnline 期间传递的PSCredential 为空。
  • Bug 修复:筛选器包含 $null 时发生客户端模块错误。
  • 在 EXO V2 模块内部创建的会话现在具有名称(命名模式:ExchangeOnlineInternalSession_%SomeNumber%)。
  • Bug 修复:由于令牌过期和 PSSession 闲置之间的时间差,远程 PowerShell cmdlet 间歇性失败。
  • 主要安全更新。
  • Bug 修复和增强功能。