Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 在组分发Exchange中搜索成员_Powershell_Exchange Server_Exchange Server 2010_Exchange Server 2013 - Fatal编程技术网

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
与他回答的内容结合起来,搜索你通讯组列表中的所有成员。