无法从具有 2000 多个用户帐户的 AD OU 中提取完整用户列表。限制为 2000 个用户

无法从具有 2000 多个用户帐户的 AD OU 中提取完整用户列表。限制为 2000 个用户

我想使用以下命令提取 Active Directory 中的所有用户。很少有 OU 拥有超过 2000 个用户帐户。使用此命令,我确实获得了所需的用户,但拥有超过 2000 个用户的 OU 中的用户仅返回 2000 个。这可能是 AD 功能,但我需要 OU 的所有用户帐户。请提出建议并提供帮助。

Get-ADUser -Filter * -SearchBase "OU=AllUsers,DC=example,DC=com" -Properties * |
Select-Object name, DisplayName, DistinguishedName, GivenName, Surname, SamAccountName | 
export-csv -path D:\AllUserExport.csv -NoTypeInformation

答案1

-properties *如果您不需要所有用户属性,请不要这样做。您正在撤回全部所有帐户的数据,因此查询所花的时间比实际需要的要长得多。

如果您运行Get-AdUser [username],您将看到默认结果集中唯一缺少的是DisplayName。因此,只需将其包含在您的-Properties查询中即可。

其次,2000 个用户听起来像是一个不寻常的数字。默认情况下,LDAP 页面大小为 1000 个对象,默认情况下Get-Aduser -ResultSetSize$null(无限制),Get-ADUser页面大小为 250 个对象。

我刚刚get-aduser -filter *在我的域上执行了一个操作,并在多个 OU 级别中毫无问题地返回了 60000 多个用户。

所以我想知道您是否遇到了超时问题 - 如果您的查询每页花费的时间超过 2 分钟,它就会超时,特别是因为您正在拖回所有用户属性。如果用户拥有证书,数据可能会变得非常大。但通常您会收到错误。也许可以尝试不导出 CSV 并使用最少的属性。

$users = Get-ADUser -Filter * -SearchBase "OU=AllUsers,DC=example,DC=com" -Properties Displayname | 
Select-Object name, DisplayName, DistinguishedName, GivenName, Surname, SamAccountName 

$users.count看看之后的结果是什么。

答案2

尝试-ResultSetSize在 Get-ADUser 上指定 $null 或足够大的值以返回所有结果。

相关内容