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
- ConditionalCustomAttribute1 到 ConditionalCustomAttribute15。
以下 cmdlet 上提供了预装筛选器:
预先设置的筛选器示例
此示例介绍如何在 Exchange 命令行管理程序中使用预装筛选器来创建动态通讯组。 本示例中的语法与用于创建电子邮件地址策略、地址列表或 GAL 的语法相似,但不完全相同。 创建固有筛选器时,应提出下列问题:
你希望从哪个组织单位 (OU) 包含 recipients (RecipientContainer 参数) ?
注意
为此,选择 OU 仅适用于创建动态通讯组,而不适用于创建电子邮件地址策略、地址列表或 GAL。
要包含哪些类型的收件人 (IncludedRecipients 参数) ?
要在筛选器中包含哪些附加条件, (ConditionalCompany、 ConditionalDepartment、 ConditionalStateOrProvince 和 ConditionalCustomAttribute 参数) ?
此示例创建具有以下属性的动态通讯组:
- 名称: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:
- Get-CASMailbox
- Get-Contact
- Get-DistributionGroup
- Get-DynamicDistributionGroup
- Get-Group
- Get-Mailbox
- Get-MailContact
- Get-MailPublicFolder
- Get-MailUser
- Get-Recipient
- Get-RemoteMailbox
- Get-SecurityPrincipal
- Get-UMMailbox
- Get-User
- Get-UnifiedGroup
有关可与 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 筛选器括在双引号或大括号
系统值:将整个 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 中的筛选器注意事项。 |