【问题标题】:Move user object across domain跨域移动用户对象
【发布时间】:2023-03-08 09:39:01
【问题描述】:

我们为客户的一个大型域迁移项目编写了一个迁移工具 (C#)。客户拥有一个林,其中包含一个父域和多个子域。他们希望将所有用户对象从子域移动到父域。

除了很多客户特定的东西,迁移工具使用以下 ADSI 方法将用户对象从子域移动到父域:

IADsContainer::MoveHere https://msdn.microsoft.com/en-us/library/aa705991%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

根据以下文章,如果满足某些要求,则可以跨域移动对象: https://technet.microsoft.com/en-us/library/ee198798.aspx?f=255&MSPPError=-2147217396

出于测试目的,我使用以下 VBScript,它与我的 C# 应用程序基本相同:

Set objOU = GetObject("LDAP://ou=Management,dc=NA,dc=fabrikam,dc=com")
objOU.MoveHere "LDAP://cn=AckermanPilar,ou=Management,dc=fabrikam,dc=com",vbNullString

上面的 VBScript 在我的测试环境中工作。如果我们在生产中尝试相同的脚本,它会失败并显示以下无用的错误消息:

Error: The server is unwilling to process the request. 
Code: 80072035
Source: Active Directory

但是,如果我们运行相同的脚本将用户对象从父域移动到子域,它就可以工作。

我们尝试移动的用户对象除了作为通用组的主组之外没有任何组成员身份。我们从源域(子域)运行脚本,并且我们用于运行脚本的用户帐户具有企业管理员权限。我们还仔细检查了上面链接中的所有要求。

有没有人知道问题可能是什么和/或我该如何解决?

【问题讨论】:

    标签: c# vbscript active-directory


    【解决方案1】:

    我们尝试了很多不同的配置、权限、设置等。最后,我们尝试在不同的域控制器(也在子域中)上运行脚本,它就可以正常工作。

    我们还没有发现这两个域控制器之间有什么区别,但它现在可以工作。

    更新:运行脚本的服务器具有 PDC 角色。我没有找到任何文章说你必须在 PDC 上运行脚本,但看起来你必须这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2013-02-28
      • 2013-08-20
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多