【发布时间】:2019-04-08 07:54:05
【问题描述】:
我们有一个拥有 500 万用户的 Active Directory。尝试使用 powershell 脚本提取用户时,我们收到错误“Get-ADUser : This operation returned because the timeout period expired”。
已经尝试在网上搜索优化的脚本。下面是我们所拥有的。这适用于约 50 万用户。
Import-Module ActiveDirectory
$Users = Get-ADUser -SearchBase "CN=Users,DC=*****,DC=*****,DC=*****" -Server "*****" -ResultPageSize 1 -LDAPFilter "(&(objectCategory=User)(whenCreated>=20190101000000.0Z)(whenCreated<=20190131235959.0Z))" -Properties WhenCreated | Select-Object Name, WhenCreated
$Users | Export-Csv C:\Temp\January2019.csv -NoTypeInformation
【问题讨论】:
-
你为什么将
ResultPageSize设置为1??对于这么多用户,我宁愿将默认值 256 提高到 [Int32]::MaxValue (2147483647)。见Get-ADUser -
我已经尝试将它的值更改为 100/500/1000 并且也没有使用 ResultPageSize 但仍然出现错误。
-
试试 adsisearcher 和 ResultPage Size 像 200 或更少到 100
-
如果您将 Get-ADuser 直接通过管道传输到 csv 而不是将其存储在变量中,它是否有效?您也可以尝试增加 powershell 的可用内存:vmwareinsight.com/Tips/2016/6/5798868/…
-
您的组织可能在
UsersOU 中有许多子OU。或许最好创建一个由这些子 OU 组成的数组并一次循环遍历它们,并在执行过程中添加到 CSV 文件中。
标签: powershell active-directory