我想在CSV文件中检索所有AD用户。但每次我运行我的脚本时,CSV文件都有不同的用户数量。
我知道最多有4000个用户......但有时会检索到500到600个结果。
我注意到在我的CSV文件中,最后一行是
"Person Name", "person.name@email.com","person.name","CN=somewhere,OU=USERS,OU=THERE,OU=HERE,OU=SOMEPLACE,OU=ORG,DC= (here is the part where it breaks)
我注意到,总是在最后一行,结果是休息。我的CSV文件有限制吗?
我无法弄清楚,发生了什么。
$path = ".\Users.csv"
$root = [adsi]''
$searcher = New-Object System.DirectoryServices.DirectorySearcher($root)
$searcher.Filter = "(&(objectClass=user))"
$searcher.PageSize = 5000 #iknow the max is 1000, but when i do it, and count my result, its show up 4000+
$searcher.SizeLimit = 5000
$cols = "cn", "mail", "samaccountname", "distinguishedname"
foreach ($i in $cols) {$searcher.PropertiesToLoad.Add($i)}
$users = $searcher.FindAll() |
Select-Object @{e={$_.properties.cn};n='DisplayName'},
@{e={$_.properties.mail};n='Email'},
@{e={$_.properties.samaccountname};n='sAMAccountName'},
@{e={$_.properties.distinguishedname};n='distinguishedname'}
$users | Export-Csv $path -Delimiter ";" -Encoding Default #now delimiting using ";" to do have problems with my string with commas
答案 0 :(得分:3)
使用ActiveDirectory模块cmdlet。这么容易多了。看起来像这样:
$path = ".\Users.csv"
Get-ADUser -Filter * |
Select-Object cn, mail, samaccountname, distinguishedname |
Export-Csv -Path $Path
根据您的PowerShell版本,您可能需要手动导入模块。
Import-Module ActiveDirectory
答案 1 :(得分:2)
在我看来,如果您想要从AD大量导出数据,您可以使用LDIFDE.EXE
等集成工具来使用LDIF
格式,如果您要导出为CSV
格式,则可以使用CSVDE.EXE
。
csvde -f exportfile.csv -d "DC=SILOGIX-ESS01,DC=local" -r "(&
(objectClass=user))" -l DisplayName,Email,sAMAccountName,distinguishedname
CSVDE.EXE是Microsoft的原生工具。