You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量将AD组从子OU移至上级OU并删除该子OU?

批量迁移子OU中AD组至上级OU的实现方案

以下是两种常用的批量处理方法,适用于将指定子OU内的所有AD组迁移到上级OU,为后续删除子OU做准备:

PowerShell 方案(推荐)

1. 获取子OU内的所有AD组

首先定义目标子OU的LDAP路径,然后查询该OU下的所有组:

# 替换为你的子OU LDAP路径
$sourceOU = "OU=Daughter,OU=Mother,DC=test,DC=fabrikam,DC=com"
# 仅获取当前OU内的组(不包含子OU),如需包含子OU将-SearchScope改为Subtree
$groups = Get-ADGroup -Filter * -SearchBase $sourceOU -SearchScope OneLevel

2. 批量迁移至上级OU

可以手动指定上级OU路径,或通过字符串处理自动提取上级OU:

# 自动提取上级OU路径(移除开头的子OU段)
$targetOU = $sourceOU -replace "^OU=[^,]+,", ""
# 遍历并移动每个组
foreach ($group in $groups) {
    Move-ADObject -Identity $group.DistinguishedName -TargetPath $targetOU
    Write-Host "已完成组迁移: $($group.Name)"
}

命令行工具方案(适用于无PowerShell环境)

1. 导出子OU内的组列表

使用dsquery查询所有组并保存到文本文件:

dsquery group "OU=Daughter,OU=Mother,DC=test,DC=fabrikam,DC=com" -limit 0 > groups.txt

-limit 0表示返回全部结果,无数量限制。

2. 批量执行迁移

通过for循环读取列表,用dsmove完成迁移:

# 直接在命令行执行
for /f "delims=" %g in (groups.txt) do dsmove "%g" -newparent "OU=Mother,DC=test,DC=fabrikam,DC=com"

# 若在批处理文件中执行,需将%g替换为%%g
for /f "delims=" %%g in (groups.txt) do dsmove "%%g" -newparent "OU=Mother,DC=test,DC=fabrikam,DC=com"

注意事项

  • 操作前务必验证结果:PowerShell可先执行$groups | Select-Object Name, DistinguishedName查看组列表;命令行可打开groups.txt确认内容。
  • 确保执行账号拥有AD对象移动权限及目标OU的写入权限。
  • 迁移完成后,确认子OU内无剩余对象(组、用户、计算机等),再执行删除操作。

内容的提问来源于stack exchange,提问作者Florian Pichery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:45:36