LDIFDE 不支持直接修改 AD 对象属性,仅能通过“导出→编辑→导入”实现变更;导出默认模式,需用 -d、-r、-l 精确筛选;修改文件须符合 LDIF 语法,导入时推荐 -i -k -c -v -j 参数组合。
ldifde 工具本身不支持“直接修改”ad中已存在对象的属性,它只能导出数据到 ldif 文件,再通过编辑该文件后重新导入来实现属性变更。整个过程是“导出 → 编辑 → 导入”,不是在线实时修改。
批量导出 AD 对象(用户、组、OU)
导出是 LDIFDE 的默认模式,无需加 -i 参数。关键在于用好 -d(起始容器)、-r(过滤条件)和 -l(精简属性):
- 导出某个 OU 下所有用户:
ldifde -f users.ldf -d "OU=HR,DC=contoso,DC=com" -r "(objectClass=user)" -l "dn,sAMAccountName,displayName,mail,description" - 导出全域所有安全组:
ldifde -f groups.ldf -d "DC=contoso,DC=com" -r "(&(objectClass=group)(groupType:1.2.840.113556.1.4.803:=2147483648))" -l "dn,name,description,member" - 导出所有 OU(不含子对象):
ldifde -f ous.ldf -d "DC=contoso,DC=com" -r "(objectClass=organizationalUnit)" -l "dn,ou,description"
建议始终加上 -v(详细日志)和 -j .\logs(指定日志目录),便于排查空结果或权限问题。
准备可导入的 LDIF 修改文件
导出的 .ldf 文件只是快照,要改属性,需手动或脚本编辑。每条记录必须满足 LDIF 语法规范:
- 以 dn: 开头,写明完整可分辨名称
- 使用 changetype: modify 标明这是修改操作
- 用 replace:、add: 或 delete: 指定动作,后跟属性名
- 每个修改块末尾加空行
示例(批量更新用户邮箱后缀):
dn: CN=Zhang San,OU=IT,DC=contoso,DC=comchangetype: modify
replace: mail
mail: zhangsan@contoso.com
-
dn: CN=Li Si,OU=IT,DC=contoso,DC=com
changetype: modify
replace: mail
mail: lisi@contoso.com
-
执行导入完成属性更新
编辑保存后,用 -i 参数导入。推荐组合使用容错与日志参数:
- ldifde -i -f update.ldf -s dc01.contoso.com -c "DC=X" "DC=contoso,DC=com" -k -v -j .\logs
- -k:跳过“对象已存在”“约束违规”等非致命错误,避免单条失败中断全部导入
- -c:把文件中占位的 DC=X 替换为真实域名,提升脚本复用性
- 若涉及密码或敏感属性(如 unicodePwd),LDIFDE 默认不支持;需改用 PowerShell 的 Set-ADUser 或第三方工具
验证与注意事项
导入完成后不能只看“成功修改 X 条”,必须抽样验证:
- 用 dsquery user -name "Zhang San" | dsget user -email -desc 快速核对
- 或在 PowerShell 中运行:Get-ADUser zhangsan -Properties mail,description | fl name,mail,description
- 注意:修改 userAccountControl 等整数型属性时,LDIF 中必须写数字(如 514),不能写字符串或中文描述
- 所有属性名严格区分大小写,且必须存在于 Schema 中;填错会报错 0x57(Invalid parameter)


















