【发布时间】: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