【发布时间】:2016-05-22 13:12:30
【问题描述】:
我有这个运行良好的脚本(输出看起来不错),但现在需要超过 12 个小时。 csv中有34220条记录,现在只有2110。也许我需要先加载所有用户数据,然后与csv文件比较?谢谢帮忙...
import-module ActiveDirectory
$CCure = Import-csv C:\Scripts\CCure\CCure-Personnel-enabled.csv
ForEach ($Row in $CCure) {
[string]$ID = $Row.ObjectID
[string]$Name = $Row.Name
[string]$EmpID = $Row.Int5
If ($EmpID.Trim() -ne "0") {
$User = Get-ADUser -LDAPFilter "(&(&(&(objectclass=user)(objectcategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2))))((employeeId=*$EmpID))" -SearchBase 'DC=Enterprise,DC=mycompany,DC=org' -Properties SamAccountName,DisplayName,EmployeeId,enabled |
Select @{Name="CCure ObjectID";Expression={$ID}},SamAccountName,DisplayName,@{Name="CCure Name";Expression={$Name}},EmployeeId,@{Name="CCure Int5 Row";Expression={$EmpID}},enabled | Export-csv c:\scripts\ccure\EmployeeIds4-10-2016.csv -NoTypeInformation -append
}
}
【问题讨论】:
-
域中有多少个帐户?
-
AD 中有超过 21k 的活跃用户,但 CCure 可能有很多不在 AD 中。
-
为什么要在 LDAPFilter 中添加
$EmpID和*?EmployeeId是否包含更多而不仅仅是 ID? -
这是个好问题。我可能是从另一个脚本中完成的,只是偶然保留了它。我可能可以删除它,但不确定它会加快速度吗?
-
满足
(&(attribute=*value))的搜索比满足(&(attribute=value))的搜索要快方式(并且在DC 上占用的资源要少得多)
标签: powershell