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

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

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

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

固有筛选器

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

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

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

  • IncludedRecipients
  • ConditionalCompany
  • ConditionalDepartment
  • ConditionalStateOrProvince
  • ConditionalCustomAttribute1ConditionalCustomAttribute15

预设筛选器在以下 Cmdlet 上可用:

预设筛选器示例

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

  • 您想 (哪个组织单位的 OU) 中包含 (RecipientContainer 参数) 的收件人?

    注意

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

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

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

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

  • 名称:Contoso Finance
  • 收件人类型:用户邮箱。
  • 收件人位置:名为 Contoso.com/Users 的 OU。
  • 筛选器 仅包括将 “部门 ”属性定义为“财务”,将 “公司 ”属性定义为“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 且“ 办公室 ”属性定义为“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'使用 '$($User -Replace "'","''")'. 而不是 。

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

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

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

    • 文本值:取决于你对搜索文本的封闭方式:

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

    • 整数值: 要确保它们在所有情况下都正常工作,请通过以下方式之一将它们括起来:

      • 整数括在单引号中:用双引号或大括号"CountryCode -eq '840'"括起来整个 OPATH 筛选器。
      • 双引号括起来的整数:用大括号 (例如 {CountryCode -eq "840"}) 括住整个 OPATH 筛选器。
    • 系统值:请用单引号或大括号 (例如 'HiddenFromAddressListsEnabled -eq $true') 将整个 OPATH 筛选器括起来。 如果转义美元符号系统值,还可以将整个 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 模块中的九个独占 Get-EXO* cmdlet 中筛选器的注意事项。