我想使用以下命令提取 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 或足够大的值以返回所有结果。