powershell 是 windows server ad 中批量创建多级 ou 最高效方式,需用 csv 按层级顺序定义 name 和 path,脚本逐行创建并启用防误删保护,失败自动跳过,支持斜杠路径解析。
在 windows server 的 active directory 环境中,powershell 是批量创建多级 ou 最高效、最可控的方式。关键不是逐条执行 new-adorganizationalunit,而是用结构化数据驱动脚本,按层级顺序自动创建父 ou 后再建子 ou,避免路径不存在报错。
准备层级结构定义文件
先用 CSV 或 JSON 明确 OU 的完整路径和顺序。推荐 CSV,结构清晰易维护:
- 每行代表一个 OU,含两列:Name(OU 名称)和 Path(其父容器的 DN,如
"ou=Company,dc=contoso,dc=com") - 确保数据按从上到下层级顺序排列:先有父 OU,后有子 OU。例如:
Sales,"dc=contoso,dc=com"
Marketing,"ou=Sales,dc=contoso,dc=com"
Digital,"ou=Marketing,ou=Sales,dc=contoso,dc=com" - 保存为
C:\Data\ou-structure.csv
编写并运行批量创建脚本
脚本需逐行读取 CSV,并对每个 OU 执行创建操作。注意两点:一是检查 OU 是否已存在,避免重复报错;二是启用防误删保护(生产环境强烈建议):
- 打开 PowerShell(以管理员身份运行)
- 粘贴并执行以下脚本:
New-ADOrganizationalUnit -Name $_.Name -Path $_.Path -ProtectedFromAccidentalDeletion $true -ErrorAction SilentlyContinue
- 若某 OU 创建失败(比如父路径尚不存在),PowerShell 会跳过并继续处理下一行——这正说明顺序很重要,必须保证 CSV 中父 OU 在前、子 OU 在后
验证与补救
创建完成后,快速确认结构是否完整:
- 列出所有 OU 并按路径排序:
Get-ADOrganizationalUnit -Filter * | Sort-Object DistinguishedName | Select-Object Name, DistinguishedName - 只查某一级(如所有直属域下的 OU):
Get-ADOrganizationalUnit -Filter * -SearchBase "dc=contoso,dc=com" -SearchScope OneLevel - 如果发现某级缺失,可单独补建:
New-ADOrganizationalUnit -Name "Finance" -Path "ou=Company,dc=contoso,dc=com"
进阶提示:支持嵌套路径自动解析
如果想直接用类似 "Company/Sales/Regional" 的斜杠格式定义路径,可加一段简单解析逻辑:
- 将 CSV 中的 Path 列改为 FriendlyPath,填入
"Company/Sales" - 脚本中加入转换:把
"Company/Sales"拼成"ou=Sales,ou=Company,dc=contoso,dc=com",再调用New-ADOrganizationalUnit - 这样更贴近人工理解,也方便非技术人员维护结构表











