关于 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 使用 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-ExchangeOnlineConnect-IPPSSession 命令之后运行。 返回一个连接信息对象。
    在 REST API 连接的多个 Connect-ExchangeOnlineConnect-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:

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 或更高版本中可用。

提示

在单个 PowerShell 会话或脚本中频繁使用 Connect-ExchangeOnlineDisconnect-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 后,请执行以下步骤:

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

  2. 在 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 后,请执行以下步骤:

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

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

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

  • 你收到以下错误:

    未找到指定搜索条件和模块名称“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:此参数接受一个或多个属性名称,以逗号分隔。

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

我们还包含一个 Minimum 属性集,其中包含 cmdlet 输出 () 标识属性的最小必需属性集。 最小属性集中的属性也Exchange Online PowerShell 模块 cmdlet 中的属性集中所述。

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

无论哪种方式,cmdlet 输出包含的属性要少得多,并且返回结果的速度要快得多。

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

Get-EXOMailbox -ResultSize 10

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

注意

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

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

发行说明

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

当前版本

版本 3.6.0

  • Get-VivaModuleFeature 现在返回有关该功能支持为 (创建策略的标识类型的信息,例如用户、组或整个租户) 。
  • 用于Viva功能访问管理的 Cmdlet 现在可处理持续访问评估 (CAE) 声明质询。
  • 添加了 Microsoft.Graph 模块兼容性问题的修补程序。

历史版本

版本 3.5.1

  • Get-EXOMailboxPermissionGet-EXOMailbox 中的 Bug 修复。
  • 模块已升级为在 .NET 8 上运行,替换了基于 .NET 6 的先前版本。
  • Add-VivaModuleFeaturePolicy 中的增强功能。

版本 3.5.0

  • 新的 Get-VivaFeatureCategory cmdlet。
  • 在 Viva 功能访问管理 (VFAM) 中添加了对类别级别的策略操作的支持。
  • Get-VivaModuleFeaturePolicy 输出中的新 IsFeatureEnabledByDefault 属性。 当未创建租户或用户/组策略时,此属性的值显示租户中用户的默认启用状态。

版本 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,用于管理 365 个组的无所有者Microsoft。

    注意

    尽管 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 cmdlet 已替换为 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

  • 会话创建期间对前缀的支持:
    • 一次只能创建一个包含前缀 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 修复和增强功能。