我正在使用以下代码来获取组中的所有成员。
Get-DistributionGroupMember -Identity "Marketing USA"
问题是,有些团体有超过 1000 名成员。因此,不是加载所有记录,有没有更好的方法可以过滤结果以仅查看我需要的成员。
我想按Primary Email
和搜索Display Name
。
我的 Exchange 版本是2010
和2013
。
我正在使用以下代码来获取组中的所有成员。
Get-DistributionGroupMember -Identity "Marketing USA"
问题是,有些团体有超过 1000 名成员。因此,不是加载所有记录,有没有更好的方法可以过滤结果以仅查看我需要的成员。
我想按Primary Email
和搜索Display Name
。
我的 Exchange 版本是2010
和2013
。
根据文档,默认情况下结果大小限制为 1000。您需要包含-ResultSize Unlimited
例如Get-DistributionGroupMember -Identity "Marketing USA" -ResultSize Unlimited
以返回更多。
对于两者Exchange 2010
,2013
您可以通过创建电子邮件地址列表来按电子邮件地址进行搜索,regex
格式为|
. 然后用于-imatch
匹配您需要的电子邮件地址。注意:这将搜索主要和次要地址。
$EmailAddress = [regex]"Username1@Domain.com|Username2@Domain.com|Username3@Domain.com"
Get-DistributionGroupMember -Identity "Marketing USA" | Where { $_.EmailAddresses.SmtpAddress -imatch $EmailAddress }
然后按显示名称搜索,您都可以使用regex
相同的方式将名称分隔为|
.
$DisplayName = [regex]"FirstName1 LastName1|FirstName2 LastName2|FirstName3 LastName3"
Get-DistributionGroupMember -Identity "Marketing USA" | Where { $_.DisplayName -imatch $DisplayName }
使用这种过滤方法,您还可以进行部分搜索。如果您只输入用户的名字,您将返回所有具有该名称的用户。电子邮件地址搜索也是如此。
通讯组也是 AD 组。使用 Get-ADGroup cmdlet,您还可以更有效地过滤搜索。
例如:
Get-ADGroup -Filter {proxyaddresses -like " SMTP:address@DOMAIN.COM "} (或使用 mail 属性,如果它等于您组织中的主要电子邮件地址)
或者
Get-ADGroup -Filter {displayname -eq "MyDL"} -Properties *
要使用此 cmdlet,您可能需要首先在您的 powershell 会话中加载带有“import-module activedirectory”的 activedirectory ps 模块。