LDIFDE 可批量导出域内所有对象及全部属性,命令为:ldifde -f all_objects.ldf -d "dc=contoso,dc=com" -p subtree -l "" -r "(objectClass=)" -k;需域管理员权限,不导出密码哈希,结果为含dn:开头的纯文本.ldf文件。
ldifde 是 windows server 域环境中用于导入导出 active directory 对象的标准命令行工具,支持 ldap 数据交换格式(ldif)。要批量导出域内所有对象及其全部属性,关键在于正确构造查询范围、指定属性列表,并避免默认截断或权限限制。
明确导出范围和基础语法
LDIFDE 默认只导出部分常用属性,且不包含所有对象(如默认跳过容器、NTDS Settings 等系统对象)。完整导出需显式指定:
-
-f:输出文件路径(如
all_objects.ldf) -
-d:起始搜索路径(如
"dc=contoso,dc=com") -
-p:搜索范围(
subtree表示递归导出整个域) -
-l:属性列表 —— 若想导出所有属性,此处留空或设为
*(推荐用*,更明确) -
-o:排除系统属性(可选,如
-o "objectCategory,objectClass";但通常保留更利于还原)
执行全属性导出的典型命令
以域 contoso.com 为例,在域控制器或有域管理员权限的机器上运行:
ldifde -f all_objects.ldf -d "dc=contoso,dc=com" -p subtree -l "*" -r "(objectClass=*)" -k
说明:
-
-r "(objectClass=*)"是通用过滤器,匹配所有对象(含用户、计算机、OU、组、联系人等) -
-k忽略错误(如某些对象无读取权限时继续导出其余项) - 若需排除已删除对象(即“墓碑”),可加
-t(但默认不返回墓碑,无需额外处理) - 导出结果是纯文本 LDIF 文件,每条记录以
dn:开头,后跟属性名/值对
注意事项与常见问题
实际使用中容易忽略以下几点:
-
权限要求:必须以域管理员或具有“读取所有属性”权限的账户运行,否则部分属性(如
unicodePwd、ntSecurityDescriptor)会被跳过或报错 -
大对象截断风险:LDIFDE 对超长属性(如
description含大量换行或二进制值)可能截断,建议配合-c替换 DN 中的占位符(如-c "DC=X" "dc=contoso,dc=com")提升兼容性 -
不导出密码哈希:Active Directory 明确禁止通过 LDAP 导出密码相关属性(
unicodePwd、ntPwdHistory等),即使指定也会被静默忽略 - 性能与大小:全属性导出可能生成 GB 级文件,建议在低峰期执行,并确保磁盘空间充足
后续处理建议
导出后的 .ldf 文件可用于分析、比对或迁移准备:
- 用文本编辑器或 PowerShell(
Get-Content+ 正则)提取特定对象类型(如只看用户:select-string -Pattern "^dn:.*CN=.*OU=.*" -Path all_objects.ldf) - 导入回测试环境前,务必用
ldifde -i配合-k和-j(日志路径)验证格式合法性 - 敏感环境建议导出后立即加密或限制访问权限,因 LDIF 包含 SID、组成员关系等关键信息










