Move-ADObject 是什么
Move-ADObject 把用户、计算机、组等对象移动到另一个组织单位(OU)。在 AD 里,OU 不只是分类目录,它同时是组策略的作用域:对象被移到哪个 OU,就套用那个 OU 链接的 GPO。因此这个命令的实质是「换策略组」,迁移前后必须用 gpresult 复核策略变化,尤其是安全基线、驱动器映射与软件分发这类影响面大的设置。
基本信息
| 适用平台 | Windows Server 的 AD 模块(ActiveDirectory)、安装了 RSAT 的客户端 |
|---|---|
| 语法 | Move-ADObject -Identity <对象或 DN> -TargetPath 'OU=...,DC=...,DC=...' |
| 批量做法 | Get-ADUser -SearchBase ... | Move-ADObject -TargetPath ...,支持 -WhatIf 预演 |
| 权限要求 | 对源对象与目标 OU 都需权限(目标 OU 上通常需要创建/删除子对象权限) |
| 可移动对象 | 用户、计算机、组、联系人等,容器与 OU 之间语义不同 |
| 关键限制 | CN=Users、CN=Computers 是默认容器,不能链接 GPO |
典型使用场景
- 新员工归档:把离职账号从业务 OU 移到停用 OU,自动套用限制策略
- 计算机归位:重装或换部门后把计算机账号移入对应 OU
- 策略上线:先把试点对象移入新 OU 验证 GPO,再逐步扩大范围
- 治理清理:把散落在默认容器里的对象纳入统一 OU 管理
- 组织结构调整:部门合并后批量搬迁账号,统一权限与策略来源
常用示例
常用示例
Get-ADUser wxm01 | Move-ADObject -TargetPath 'OU=Sales,DC=corp,DC=local' # 单个用户
Get-ADComputer -Identity PC-001 | Move-ADObject -TargetPath 'OU=Workstations,DC=corp,DC=local' # 计算机
# 批量:先预演,确认清单无误再执行
Get-ADUser -Filter 'Department -eq "Sales"' -SearchBase 'OU=Temp,DC=corp,DC=local' |
Move-ADObject -TargetPath 'OU=Sales,DC=corp,DC=local' -WhatIf
# 指定在特定的域控上执行,避免复制延迟带来的困惑
Move-ADObject -Identity 'CN=wxm01,CN=Users,DC=corp,DC=local' -TargetPath 'OU=Sales,DC=corp,DC=local' -Server DC01
# 移动后核对对象位置
Get-ADUser wxm01 -Properties DistinguishedName | Select-Object DistinguishedName移动前后要核对的项目
| 核对项 | 查看方式 | 说明 |
|---|---|---|
| 对象所在 OU | Get-ADUser 的 DistinguishedName | 确认路径已更新且合理 |
| 适用 GPO 列表 | gpresult /r 或 /h 报告 | 对比移动前后的策略差异 |
| 被拒绝的 GPO | gpresult 报告中的被拒项 | 安全筛选或 WMI 筛选导致的未生效 |
| 登录脚本与驱动器映射 | gpresult 报告 + 实测登录 | 按 OU 下发时最容易漏看到 |
| 安全基线类设置 | 策略报告对应节点 | 防火墙、审计、锁屏等影响面大 |
| 对象权限与组成员 | Get-ADObject 的 ACL 与 MemberOf | 移动本身不改变这些 |
默认容器 CN=Users 与 CN=Computers 不能链接组策略,把对象留在里面等于「不受域策略管」。这也是很多治理检查要求「所有对象必须位于 OU 下」的原因。
移动对象不会改变 SID、组成员关系与已授予的权限,只改变策略作用域与继承的权限设置;若发现「移动后权限也变了」,实际是目标 OU 上的委托或 GPO 在起作用。
移动后的验证动作
移动后的验证动作
gpupdate /force # 在目标机上强制刷新策略
gpresult /r # 命令行查看已应用与被拒的 GPO
gpresult /h D:\report\gpo_after.html # 生成可读报告,留档对比
# 移动 OU 结构前先做策略推演(推荐流程)
# GPMC -> 组策略建模 -> 指定目标用户/计算机与目标 OU,查看假设结果
Get-ADOrganizationalUnit -Filter 'Name -like "Sales*"' | Select-Object Name, DistinguishedName # 核对目标 OU 名称大批量移动对象会影响这些对象下一次登录/开机时的策略应用,误移到错误的 OU 可能套上严格限制(如禁止登录、防火墙收紧)造成业务中断。批量操作前用 -WhatIf 出清单,并安排在可回滚的窗口内执行。