Powershell 在组分发Exchange中搜索成员
我使用以下代码获取组中的所有成员Powershell 在组分发Exchange中搜索成员,powershell,exchange-server,exchange-server-2010,exchange-server-2013,Powershell,Exchange Server,Exchange Server 2010,Exchange Server 2013,我使用以下代码获取组中的所有成员 Get-DistributionGroupMember -Identity "Marketing USA" 问题是,有些团体的成员超过1000人。因此,有没有更好的方法来过滤结果,而不是加载所有记录,以便只查看所需的成员 我想通过主要电子邮件和显示名称进行搜索 我的Exchange版本是2010和2013对于Exchange 2010和2013,您可以通过在regex表单中创建电子邮件地址列表(以分隔)来按电子邮件地址进行搜索。然后使用-imatch匹配所需的
Get-DistributionGroupMember -Identity "Marketing USA"
问题是,有些团体的成员超过1000人。因此,有没有更好的方法来过滤结果,而不是加载所有记录,以便只查看所需的成员
我想通过主要电子邮件
和显示名称
进行搜索
我的Exchange版本是
2010
和2013
对于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 }
使用这种过滤方法,您还可以进行部分搜索。如果您只输入用户的名字,您将返回所有使用该名字的用户。电子邮件地址搜索也是如此 对于
Exchange2010
和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 }
使用这种过滤方法,您还可以进行部分搜索。如果您只输入用户的名字,您将返回所有使用该名字的用户。电子邮件地址搜索也是如此 根据文档,默认情况下,结果大小限制为1000。您需要包括
-ResultSize Unlimited
例如获取DistributionGroup成员-Identity“Marketing USA”-ResultSize Unlimited
以返回更多信息 根据文档,默认情况下,结果大小限制为1000。您需要包括-ResultSize Unlimited
例如获取DistributionGroup成员-Identity“Marketing USA”-ResultSize Unlimited
以返回更多信息 通讯组也是AD组。使用Get-ADGroup cmdlet,您还可以更有效地过滤搜索
例如:
获取ADGroup-筛选器{proxyaddresses-类似“SMTP:address@DOMAIN.COM“}(如果邮件属性等于组织中的主电子邮件地址,则使用邮件属性)
或
获取ADGroup-Filter{displayname-eq“MyDL”}-Properties*
要使用此cmdlet,您可能需要在powershell会话中首先加载带有“导入模块activedirectory”的activedirectory ps模块。通讯组也是AD组。使用Get-ADGroup cmdlet,您还可以更有效地过滤搜索 例如: 获取ADGroup-筛选器{proxyaddresses-类似“SMTP:address@DOMAIN.COM“}(如果邮件属性等于组织中的主电子邮件地址,则使用邮件属性) 或 获取ADGroup-Filter{displayname-eq“MyDL”}-Properties*
要使用此cmdlet,您可能需要在powershell会话中首先加载带有“导入模块activedirectory”的activedirectory ps模块。已经尝试过,但性能似乎很差。记录将首先上载到内存中,然后再进行筛选,这是真的吗?
Get DistributionGroupMember
将成员逐个输出到Where
cmdlet,该cmdlet将筛选结果,因此在内存中排序的记录不超过1条。我想你会很难找到一个更快的方法。已经尝试过了,但似乎表现很差。记录将首先上载到内存中,然后再进行筛选,这是真的吗?Get DistributionGroupMember
将成员逐个输出到Where
cmdlet,该cmdlet将筛选结果,因此在内存中排序的记录不超过1条。我想你会很难找到一个更快的方法。我不想加载所有记录,我只想搜索成员。如果你想匹配的人是通讯组中的1001人,而你只查看该组中的前1000人,你永远不会看到你要找的人。我不想窃取@Richard写的内容,但如果列表中的成员超过1000人,你必须将-ResultSize Unlimited
与他回答的内容结合起来,搜索你通讯组列表中的所有成员。我不想加载所有记录,我只想搜索成员。如果您要匹配的人是通讯组中的1001人,而您只查看该组中的前1000人,您将永远看不到您要查找的人。我不想窃取@Richard写的东西,但如果列表中的成员超过1000人,你必须将-ResultSize Unlimited
与他回答的内容结合起来,搜索你通讯组列表中的所有成员。