使用PowerShell始终获取1500个通讯组成员

lg40wkob  于 2023-04-21  发布在  Shell
关注(0)|答案(3)|浏览(150)

我想获得某个通讯组列表的所有成员(邮件地址)。目前我只接收前1500名成员。我的脚本如下所示:

$group = [ADSI]"LDAP://CN=distListOne,OU=Groups,DC=XYZ,DC=XYZ"
$group.member.count ##Always 1500 
foreach($member in $group.member)
{
    $filter = "LDAP://"+$member
    $user = [ADSI]$filter
    $user.properties.mail | out-file "C:\distrUser.txt" -append 
}

我知道有超过1500个用户在分发列表中。我需要无论如何扩大最大接收组成员。

8ljdwjyq

8ljdwjyq1#

您需要更改代码以使用DirectorySearcher的DirectorySearcher方法和check out the PageSize property
将该值设置为某个值(而不是将其保留为0)将启动 * 分页搜索 *,以允许AD返回超过1500个成员。建议将PageSize设置为合理的值,如500或1000 -如果您设置太高(高于系统限制的1500),它将被忽略并且不会工作!
看看其他博客文章如何解决这个问题:

iaqfqrcu

iaqfqrcu2#

当检索一个大的属性时,你需要批量请求其中的值。这在目录中通常被称为“范围检索”。几乎所有表现良好的MSFT LDAP API都支持这一点,包括ADSI... http://msdn.microsoft.com/en-us/library/windows/desktop/ms676302(v=vs.85).aspx

7vux5j2d

7vux5j2d3#

这将工作得很好,需要活动目录模块
(Get-ADGroup $Group -Properties members).members

相关问题