CSVDE导入域用户需三步闭环:准备(严格按AD Schema建CSV,禁用中文列名/BOM/双引号)、执行(指定DC与DN替换参数导入)、后续(设密码、启用账户、验证状态),缺一不可。
csvde 能快速导入大量域用户,但“快”不等于“一步到位”——它只负责创建对象,不设密码、不启用账户、不校验策略。真正跑通流程,关键在准备、执行和后续三步闭环。
CSV 文件必须严格按 AD Schema 写,字段顺序不能错
CSVDE 不认中文列名,也不接受 Excel 自动加的双引号或 BOM 头。最简可用结构如下(首行是属性名,全英文、小写):
-
DN:完整可分辨名,如
"CN=user01,OU=IT,DC=domain,DC=com",必须用英文半角双引号包裹 -
objectClass:固定填
user - sAMAccountName:登录名,≤20 字符,不能含空格、@、/、\ 等
-
userPrincipalName:格式为
user01@domain.com,域名需真实可解析 - displayName 和 cn:建议与 displayname 一致,且不能为空
常见错误:漏掉 cn 导致报错 “Invalid DN syntax”;用 Excel 直接另存 CSV 引入 BOM 或自动加引号;把 givenName 当必填项而忽略 cn。
导入命令要指定 DC 和 DN 替换,避免跨站延迟
在域控制器或装有 RSAT 的管理机上,以 Domain Admins 或 Account Operators 权限运行:
- 用
-s dc01.domain.com明确指定目标域控制器,防止新用户写入其他 DC 后查不到 - 用
-c "DC=domain,DC=com" "DC=domain,DC=com"做 DN 占位替换(即使不替换也要写两遍,否则报错) - 推荐用绝对路径:
csvde -i -f C:\ad\users.csv -s dc01.domain.com -c "DC=domain,DC=com" "DC=domain,DC=com"
注意:-i 是导入模式,不加就是导出;导入时若遇到重复 sAMAccountName,会直接报错 “Entry already exists”,不会跳过。
使用 qbo-mileage CLI 及用户凭证,从 Airtable、Outlook 或 Google Calendar 记录生成 QuickBooks Online 里程 CSV 文件。
导入后必须补三件事:设密码、启用账户、验证状态
CSVDE 创建的账号默认禁用(userAccountControl=514),且无密码。不能跳过这三步:
-
设密码:用 PowerShell 批量处理,例如:
Import-Csv C:\ad\users.csv | ForEach-Object { dsmod user "CN=$($_.sAMAccountName),OU=IT,DC=domain,DC=com" -pwd "P@ssw0rd2026" } -
启用账户:密码设置成功后,再批量启用:
Import-Csv C:\ad\users.csv | ForEach-Object { dsmod user "CN=$($_.sAMAccountName),OU=IT,DC=domain,DC=com" -disabled no } -
验证结果:用
dsquery user -limit 0 -ou "OU=IT,DC=domain,DC=com"检查数量;抽样登录测试,确认密码策略(如复杂度、历史记录)未被绕过
提醒:CSVDE 不支持 unicodePwd 字段,任何在 CSV 里写密码的尝试都无效;也不要指望它自动满足域级密码策略——设密码必须在导入后单独完成。
千级规模建议加日志和分批,别硬扛单文件
导入数千用户时,单个 CSV 文件容易因编码、换行或某一行格式异常导致整批失败:
- 生成 CSV 前先用 PowerShell 校验字段:确保每行都有 DN、sAMAccountName、UPN,且 sAMAccountName 不重复
- 拆成每 500 行一个文件(如 users_001.csv、users_002.csv),分别导入,出错只重跑局部
- 加
> import.log 2>&1记录输出:csvde -i -f users_001.csv -s dc01.domain.com -c "DC=domain,DC=com" "DC=domain,DC=com" > import_001.log 2>&1
不复杂但容易忽略:导入不是终点,而是批量账号生命周期的起点。后续权限分配、组策略应用、邮箱开通等,得靠 PowerShell 或 ADUC 补齐。

















