我需要导出域中所有用户的列表,但我不熟悉 DSQUERY 或 DSGET?

Nei*_*eil 6 active-directory dsquery

我真的很难创建将导出以下内容的查询:帐户名字姓氏用户所在的 OU

理想情况下,我希望将其作为 CSV 文件。我无权访问域控制器,但可以运行 DSQUERY/DSGET/etc。从我的电脑。

cha*_*j81 6

dsquery 有效,但通过拆分一个或多个空格 (\s+) 转换为 CSV 是很脆弱的。任何带有嵌入空格的属性值都会将剩余的值向右移动。此外,默认情况下 dsquery 将在输出 100 个对象后停止;“-limit 0”将输出所有结果。

通过命令行执行此操作的正确方法是使用 csvde:

csvde -f names.csv -r "(&(objectClass=user)(objectCategory=user))" -l samAccountName,givenName,sn
Run Code Online (Sandbox Code Playgroud)

强制性的 PowerShell 方法是:

csvde -f names.csv -r "(&(objectClass=user)(objectCategory=user))" -l samAccountName,givenName,sn
Run Code Online (Sandbox Code Playgroud)


sys*_*138 5

根据你的工具,你可以做

dsquery user dc=contoso,dc=com | dsget user -samid -fn -ln -dn > names.csv 
Run Code Online (Sandbox Code Playgroud)

这将创建一个以空格分隔的帐户名、名字、姓氏和位置列表。

将其转换为真正的 csv 需要更多的工作。

$userList=dsquery user dc=contoso,dc=com | dsget user -samid -fn -ln -dn
foreach ($user in $userList) {
    $outstring=$user.trim(" ") -replace('\s+',',')
    write-host  `"$outstring`"
}
Run Code Online (Sandbox Code Playgroud)

这会让你输出像

"samid","fn","ln","dn"
"jarey.boe","jarey","boe","cn=jarey.boe,ou=users,dc=contoso,dc=com"
Run Code Online (Sandbox Code Playgroud)