导出ou结构树和对象清单需分两步:先用get-adorganizationalunit获取层级关系并排序或生成树形文本,再用get-aduser/get-adobject等提取各ou下用户、组等对象;也可用ldifde导出ldif格式备份。
导出组织单位(ou)的结构树和对象清单,关键在分两步走:先获取ou层级关系,再提取各ou下的具体对象(如用户、组)。powershell 是最常用、最灵活的方式,不需要额外工具,且支持精准筛选和格式化输出。
导出OU结构树(纯层级关系)
结构树体现的是OU之间的父子嵌套关系,不包含用户或组等具体对象。用 Get-ADOrganizationalUnit 配合递归排序即可清晰呈现:
- 基础命令:获取全部OU并按DistinguishedName排序,天然反映层级(因DN越长通常层级越深)
Get-ADOrganizationalUnit -Filter * | Sort-Object DistinguishedName | Select-Object Name, DistinguishedName | Export-Csv "C:\OU_Tree.csv" -NoTypeInformation - 更直观的树形文本输出(适合快速查看):
用 Get-ADOrganizationalUnit -Filter * -Properties ParentGuid 获取父OU信息,再通过脚本计算缩进层级;或直接使用社区脚本如 Get-OUDepthTree(需提前导入),输出类似 CMD 的树状缩进格式 - 若需导出为可视化树图(如PNG或SVG),可将CSV导入Excel后用“层次图表”功能,或用PowerShell调用Graphviz生成图形文件
导出OU及其下属对象清单(含用户、组等)
这一步聚焦“每个OU里有什么”,常见需求是列出所有用户及其所在OU路径,或统计各OU下用户/组数量:
Windows 命令行编码与兼容规范。涵盖 GBK/UTF-8 编码、PowerShell/pwsh 互操作、Python/Node.js、Git 配置及代码生成规则。适用于 Windows 10/11 + MSYS2/Git Bash 环境下的所有命令行操作。
- 导出所有用户 + 所在OU完整路径(推荐用 CanonicalName):
Get-ADUser -Filter * -Properties CanonicalName | Select-Object Name, SamAccountName, CanonicalName | Export-Csv "C:\Users_With_OU.csv" -NoTypeInformation - 按OU分组统计用户数(适合审计或迁移前评估):
Get-ADUser -Filter * -Properties CanonicalName | Group-Object {$_.CanonicalName.Split('/')[1]} | Select-Object Name, Count | Export-Csv "C:\OU_User_Count.csv" -NoTypeInformation(此例按一级部门名分组) - 导出指定OU及其子OU下的全部用户、组、计算机(需分三次执行,或用循环):
例如导出“OU=IT,DC=contoso,DC=com”及所有子OU:
Get-ADObject -SearchBase "OU=IT,DC=contoso,DC=com" -Filter "*" -Properties ObjectClass, Name, DistinguishedName | Where-Object {$_.ObjectClass -in 'user','group','computer'} | Select-Object ObjectClass, Name, DistinguishedName | Export-Csv "C:\IT_All_Objects.csv" -NoTypeInformation
用LDIFDE导出OU结构与对象(适用于备份/迁移场景)
LDIFDE 是域控制器原生命令行工具,适合需要完整LDIF格式、用于跨域导入导出的场景。它能一次性导出OU定义本身(而不仅是属性):
- 导出所有OU结构(不含用户):
ldifde -f OU_Structure.ldf -s DC01 -d "dc=contoso,dc=com" -p subtree -r "(objectClass=organizationalUnit)" -l "dn,ou,description,managedBy" - 导出OU下全部对象(用户+组+OU):
ldifde -f FullOUContent.ldf -s DC01 -d "OU=Sales,DC=contoso,DC=com" -p onelevel -r "(objectClass=*)" -l "dn,objectClass,name,sAMAccountName"(注意:onelevel 只查当前OU,subtree 包含子OU) - 导出结果是纯文本LDIF,可人工审查结构,也可作为后续 ldifde -i 导入的基础
注意事项与建议
实际操作中容易忽略几个细节:
- 权限要求:运行命令的账户必须有读取AD架构和目标OU的权限;跨域导出需对应信任关系
- 性能控制:全量导出大域可能超时或内存溢出,建议加 -ResultSetSize 5000 分批,或用 -SearchScope OneLevel 限制深度
- 字段准确性:CanonicalName 比 DistinguishedName 更易读,但不包含对象类型;若需判断是否为OU,务必检查 ObjectClass 属性
- 中文支持:导出CSV时若含中文乱码,加参数 -Encoding UTF8,并在Excel中用“数据→从文本/CSV”正确导入










