最终目的是基于类似的 Exchange 数据库创建动态通讯组。我们将人员邮箱按地区分为几个数据库,并按照既定的惯例命名。
作为概念验证,我一直使用带有 -Filter 和 -or 运算符的“Get-Mailbox”命令列出多个数据库,并且它有效。结果如下:
Get-Mailbox -Filter {
(
(Database -eq 'CN=DBname01,CN=therestoftheDistinguishedName,DC=com')
-or
(Database -eq 'CN=DBname02,CN=therestoftheDistinguishedName,DC=com')
)
}
这很好用...我得到了这些数据库中的邮箱列表。但如果由于用户数量增加而添加另一个数据库,那就不理想了。
MS 文档这里说“homeMDB / Database 属性与通配符兼容...
因此,从理论上讲这应该可行并产生相同的结果:
Get-Mailbox -Filter {(Database -like "CN=DBname*")}
但是,此命令没有返回任何结果...没有错误...什么都没有。
-like 难道不支持吗?我做错了什么吗?
PS 对于 New-DynamicDistributionGroup 命令,‘-Filter’ 将被替换为‘-RecipientFilter’。Get-Mailbox 用于验证我的过滤器是否正常工作。
答案1
由于您将要使用 New-DynamicDistributionGroup 的 RecipientFilter 参数,我明白您为什么提出这个问题。
我可以让它与“数据库”以外的属性一起工作。见下文:
New-DynamicDistributionGroup "Test Group G" -RecipientFilter {DisplayName -like "G*"} -OrganizationalUnit $OU
$vargroup = Get-DynamicDistributionGroup "Test Group G"
Get-Recipient -RecipientPreviewFilter $varGroup.RecipientFilter
返回新组中包含的邮件用户(邮箱、联系人等)列表。但是,当您使用 RecipientFilter 参数运行它时{Database -like "partialDBname*"}
,上述相同命令也不会返回任何内容,就像Get-mailbox -Filter {Database -eq "DBname"}
不返回任何内容一样。您可能必须在数据库属性以外的其他属性上执行此操作。当您查看 Get-Mailbox cmdlet TechNet 页面上的 Filter 参数时,它实际上指向您引用的相同“可过滤属性”页面。
编辑:看起来像这是一个东西。这是一个旧的 MS 博客,但我没有看到有关未来版本的 Exchange 的任何更新。看起来无法对数据库进行过滤。不过您可以使用其他属性。您提到它们位于不同的区域。您可以使用组策略向用户对象添加/替换属性。
我将创建测试组并使用上述命令来确保我得到我想要的结果。
答案2
尝试这个命令:
get-mailbox |where{$_.database -like 'DBname*'}|ft name,database