【备忘】Move-ADObject跨子域迁移用户

【背景】由于工作调整,用户需要从A国迁移到B国工作。

- 站在 IT角度,A、B国都是全球根域下的子域,分别为A.domain.com, B.Domain.com。两者是平级的,即使把用户保留的A域里,其实也照常使用。

- 站在HR角度,希望把用户从A迁移到B, 并保持用户当前的 IT权限不变。同时,由于全球统一采用了O记的一套HR系统,按照流程,需要在HR系统里先将A国的用户做离职,然后再在为B国创建新的用户。更麻烦的是,AD里的账号是跟HR系统自动联动的,如果在HR系统里给用户做了离职操作,对应的AD里的账号就会被禁用并做初始化处理。

【处理】
1. 让HR系统的管理员对要迁移的用户做特殊设置,确保在HR系统里做离职操作不会把AD里的账号给初始化掉。
2. HR 根据离职流程做用户离职操作
3. 记录用户当前在AD以及AzureAD里的组属性(迁移后如有漏掉,就可以对照再给加回去)
4. 在AD里创建一个专门用于迁移用户的服务账号
5. 为新建的服务账号在 A 、B 两个域里分别做Delegation 操作,允许该服务账号(比如是在A域里创建的名为 moveaccount的一个账号)可以读取A域的账号,然后在B域特定的OU上有写权限。
6. 在A域的一台电脑上,运行命令:
get-aduser <A域的用户名> | Move-ADObject -TargetPath "OU=Test,DC=B,DC=domain,DC=com" -TargetServer "<MasterDC in B.domain.com>" -server "<Master DC in A.domain.com" -Credential A\moveaccount
7. 根据抵步记录的组属性,检查并补充遗漏的AD及AAD组。

【另】过程中遇到的几个报错及处理方法
1. 最初直接用A域的域管理员账号做迁移,结果遇到 "No credentials in the security package" 的报错,查下来可能是由于域管理员账号级别太高,不能在第五步的时候再在B域里做Delegation操作了。

--- 解决:单独创建一个常规的AD用户账号用于迁移操作。

2. “一旦移动,不能将带有成员身份的对象跨域移动,这会侵犯账户组的成员身份条件。从账户组成员身份删除对象,再试一次”

--- 解决: 用户原先的账号隶属于一些本地域及全局的AD组,从里面移除后再执行迁移就可以了。通用组可以保留不动。

3. “服务器已拒绝客户端凭据”


---- 解决:这个就是因为输错用户名了,拼写正确就行。

4. “The operation cannot be performed because child objects exist.This operation canonly be performed on a leaf object”
“由于存在子对象,无法执行操作。这个操作只能在叶对象上执行”


----- 解决:在adsiedit.msc里,查到用户有下面的这个CN=ExchangeActiveSyncDevices属性。删除掉再迁移就没上面的报错了。

5. Access is denied

--- 解决:用于迁移的服务账号在源域没有读取权限,或者在目标域没有写入权限。按照上面的第五步设置好权限就行。

---EOF---

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值