Exchange PowerShell 命令中的收件人筛选器

Exchange 命令行管理程序中的 cmdlet 和 Exchange Online PowerShelll 支持收件人相关 cmdlet 中的不同类型的筛选器:

  • 预先设置的筛选器。
  • 使用 RecipientFilter 参数的自定义筛选器。
  • 使用 Filter 参数的自定义筛选器。
  • 使用 ContentFilter 参数的自定义筛选器。

较旧版本的 Exchange 使用 LDAP 筛选语法来创建自定义地址列表、全局地址列表 (GAL)、电子邮件地址策略和通讯组。 从 2007 Exchange Server 开始,OPATH 筛选语法替换了 LDAP 筛选语法。

固有筛选器

固有筛选器使用 Exchange 中的常用属性筛选动态通讯组、电子邮件地址策略、地址列表或 GAL 的收件人。 使用预装筛选器,可以使用 Exchange PowerShell 或 Exchange 管理中心 (EAC) 。 使用预装筛选器,可以执行以下任务:

  • 确定收件人的范围。
  • 根据公司、部门和州/地区等常见属性添加条件筛选。
  • 添加收件人的自定义属性。 有关详细信息,请参阅Custom Attributes

下列参数视为固有筛选器:

  • IncludedRecipients
  • ConditionalCompany
  • ConditionalDepartment
  • ConditionalStateOrProvince
  • ConditionalCustomAttribute1ConditionalCustomAttribute15

以下 cmdlet 上提供了预装筛选器:

预先设置的筛选器示例

此示例介绍如何在 Exchange 命令行管理程序中使用预装筛选器来创建动态通讯组。 本示例中的语法与用于创建电子邮件地址策略、地址列表或 GAL 的语法相似,但不完全相同。 创建固有筛选器时,应提出下列问题:

  • 你希望从哪个组织单位 (OU) 包含 recipients (RecipientContainer 参数) ?

    注意

    为此,选择 OU 仅适用于创建动态通讯组,而不适用于创建电子邮件地址策略、地址列表或 GAL。

  • 要包含哪些类型的收件人 (IncludedRecipients 参数) ?

  • 要在筛选器中包含哪些附加条件, (ConditionalCompanyConditionalDepartmentConditionalStateOrProvinceConditionalCustomAttribute 参数) ?

此示例创建具有以下属性的动态通讯组:

  • 名称:Contoso Finance。
  • 收件人类型:用户邮箱。
  • 收件人位置:名为 Contoso.com/Users 的 OU。
  • 过滤 器 仅包括将 Department 属性定义为 Finance 和 将 Company 属性定义为 Contoso 的收件人。
New-DynamicDistributionGroup -Name "Contoso Finance" -OrganizationalUnit Contoso.com/Users -RecipientContainer Contoso.com/Users -IncludedRecipients MailboxUsers -ConditionalDepartment "Finance" -ConditionalCompany "Contoso"

本示例显示此新动态通讯组的属性。

Get-DynamicDistributionGroup -Identity "Contoso Finance" | Format-List Recipient*,Included*

使用 RecipientFilter 参数的自定义筛选器

如果预装筛选器不能满足你的需求,可以使用 RecipientFilter 参数创建自定义筛选器。 此参数在以下 cmdlet 上可用:

有关可与 RecipientFilter 参数一起使用的可筛选属性的详细信息,请参阅 RecipientFilter 参数的可筛选属性

自定义筛选器示例

以下示例使用 RecipientFilter 参数创建动态通讯组。 本示例中的语法与用于创建电子邮件地址策略、地址列表或 GAL 的语法相似,但不完全相同。

此示例使用自定义筛选器创建具有以下属性的动态通讯组:

  • 名称:AllContosoNorth。
  • 收件人类型:用户邮箱。
  • 收件人位置:名为 Contoso.com/Users 的 OU。
  • 过滤 器 仅包括将 公司 属性定义为 Contoso 和 Office 属性定义为 North Building 的收件人。
New-DynamicDistributionGroup -Name AllContosoNorth -OrganizationalUnit contoso.com/Users -RecipientFilter "((RecipientTypeDetails -eq 'UserMailbox') -and (Company -eq 'Contoso') -and (Office -eq 'North Building'))"

使用 Filter 参数的自定义筛选器

可以使用 Filter 参数筛选命令结果,以指定要检索的对象。 例如,可以使用筛选器字符串指定一组用户或组,而不是检索所有用户或组。 这种类型的筛选器不修改对象的任何配置或属性。 它只修改命令返回的对象集。

使用 Filter 参数修改命令结果称为“服务器端筛选”。 服务器端筛选将命令和筛选器提交给服务器进行处理。 我们还支持客户端筛选,其中命令从服务器检索所有对象,然后在本地控制台窗口中应用筛选器。 若要执行客户端筛选,请使用 Where-Object cmdlet。 有关服务器端筛选和客户端筛选的详细信息,请参阅Working with Command Output中的“如何筛选数据”。

若要为具有 Filter 参数的 cmdlet 查找可筛选属性,可以对对象运行 Get 命令并通过管道传递 Format-List 参数来设置输出格式。 大多数返回的值都可用于 Filter 参数。

以下示例返回邮箱 Ayla 的详细列表。

Get-Mailbox -Identity Ayla | Format-List

Filter 参数可用于以下收件人 cmdlet:

有关可与 Filter 参数一起使用的可筛选属性的详细信息,请参阅 Filter 参数的可筛选属性

筛选器参数示例

此示例使用 Filter 参数返回有关其标题包含单词“manager”的用户的信息。

Get-User -Filter "Title -like 'Manager*'"

使用 ContentFilter 参数的自定义筛选器

使用 New-MailboxExportRequest cmdlet 时,可以使用 ContentFilter 参数以选择特定邮件内容进行导出。 如果该命令找到包含与内容筛选器匹配的内容的邮件,会将该邮件导出为 .pst 文件。

ContentFilter 参数示例

此示例创建一个导出请求,用于在 Ayla 的邮箱中搜索正文包含短语“公司招股说明书”的邮件。如果找到该短语,命令会将具有该短语的所有消息导出到 .pst 文件。

New-MailboxExportRequest -Mailbox Ayla -ContentFilter "Body -like 'company prospectus*'"

有关可与 ContentFilter 参数一起使用的可筛选属性的详细信息,请参阅 ContentFilter 参数的可筛选属性

其他 OPATH 语法信息

创建自己的自定义 OPATH 筛选器时,请考虑以下各项:

  • 使用以下语法来标识要搜索的值的类型:

    • 文本值:将文本括在单引号中,例如 (或 'Value''Value with spaces') 。 或者,可以将文本值括在双引号中,但这限制了可用于将整个 OPATH 筛选器括起来的字符。

    • 变量:将需要用单引号 (展开的变量括起来, '$User' 例如,) 。 如果变量值本身包含单引号,则需要识别 (转义) 单引号才能正确展开变量。 例如,使用 '$($User -Replace "'","''")'而不是 '$User'

    • 整数值:无需将整数括起来 (例如 500) 。 通常可以将整数括在单引号或双引号中,但这限制了可用于将整个 OPATH 筛选器括起来的字符。

    • 系统值:不要将系统值 (,例如 $true$false$null) 。 若要将整个 OPATH 筛选器括在双引号中,需要转义系统值中的美元符号 (例如 `$true) 。

  • 需要将整个 OPATH 筛选器括在双引号 “” 或单引号 ' 中。 尽管从技术上讲,任何 OPATH 筛选器对象都是字符串而不是脚本块,但仍可以使用大括号 { },但前提是筛选器不包含需要扩展的变量。 可用于括住整个 OPATH 筛选器的字符取决于要搜索的值的类型以及 (或未使用) 来括住这些值的字符:

    • 文本值:取决于要搜索的文本括起来的方式:

      • 用单引号括起来的文本:将整个 OPATH 筛选器括在双引号或大括号中。
      • 用双引号括起来的文本:将整个 OPATH 筛选器括在大括号中。
    • 变量:将整个 OPATH 筛选器括在双引号中, (例如 "Name -eq '$User'") 。

    • 整数值:取决于 (或未将整数) 进行搜索的方式:

      • 整数未括起来:将整个 OPATH 筛选器括在双引号、单引号或大括号 (,例如 "CountryCode -eq 840") 。
      • 用单引号括起来的整数:将整个 OPATH 筛选器括在双引号或大括号 "CountryCode -eq '840'"中。
      • 双引号括起来的整数:将整个 OPATH 筛选器括在大括号 (,例如 {CountryCode -eq "840"}) 。
    • 系统值:将整个 OPATH 筛选器括在单引号或大括号 (例如 'HiddenFromAddressListsEnabled -eq $true') 。 如果转义美元符号系统值,还可以将整个 OPATH 筛选器括在双引号 (例如 "HiddenFromAddressListsEnabled -eq `$true") 。

    下表总结了搜索条件的兼容性以及可用于包含整个 OPATH 筛选器的有效字符:

    搜索值 OPATH 筛选器
    括在
    双引号
    OPATH 筛选器
    括在
    单引号
    包含在 中的 OPATH 筛选器
    括号
    'Text'
    "Text"
    '$Variable'
    500
    '500'
    "500"
    $true
    `$true
  • 在所有逻辑运算符或比较运算符之前包括连字符。 最常用的运算符包括:

    • -and
    • -or
    • -not
    • -eq (等于)
    • -ne (不等于)
    • -lt (小于)
    • -gt (大于)
    • -like (字符串比较)
    • -notlike (字符串比较)
  • 许多可筛选属性都接受通配符。 如果使用通配符,请使用 -like 运算符而不是 -eq 运算符。 使用 -like 运算符查找丰富类型中的模式匹配项, (例如字符串) 。 使用 -eq 运算符查找完全匹配项。

    在 Exchange Online PowerShell 中使用 -like 运算符时,大多数参数中仅支持通配符作为后缀。 例如, "Department -like 'sales*'" 允许,但 "Department -like '*sales'" 不允许。

    提示

    即使通配符前缀在 Exchange Online PowerShell 中的筛选器参数中有效,也不建议由于性能低的问题而使用它。

  • 有关可使用的运算符的详细信息,请参阅:

收件人筛选器文档

下表包含文章链接,可帮助你详细了解可与 Exchange 收件人命令一起使用的可筛选属性。

文章 说明
Exchange cmdlet 上 RecipientFilter 参数的可筛选属性 详细了解可用于 RecipientFilter 参数的可筛选属性。
Exchange cmdlet 上 Filter 参数的可筛选属性 详细了解可用于 Filter 参数的可筛选属性。
Exchange Online PowerShell 模块中的筛选器 了解 Exchange Online PowerShell 模块中 9 个独占 Get-EXO* cmdlet 中的筛选器注意事项。