将 AD 用户从一个 OU 移动到另一个 OU

问题描述 投票:0回答:4

我想使用 C# 将 Active Directory 用户从一个组织单位移动到另一个组织单位。

我已参考以下链接

  1. http://forums.asp.net/t/932664.aspx?移动+an+AD+用户+from+an+OU+到+another+OU
  2. http://www.nullskull.com/q/10279930/to-move-a-user-from-one-ou-to-another-ou.aspx

并尝试了下面的代码,但它抛出错误

DirectoryEntry eLocation = new DirectoryEntry("LDAP://CN=Test User,OU=Users,OU=Development,DC=domain,DC=com");
DirectoryEntry nLocation = new DirectoryEntry("LDAP://OU=Users,OU=QC,DC=domain,DC=com");
eLocation.MoveTo(nLocation);

上面的代码抛出下面的错误

A referral was returned from the server.
Error code: -2147016661
Extended Error Message 0000202B: RefErr: DSID-0310082F, data 0, 1 access points
ref 1: 'domain.com'
c# active-directory
4个回答
10
投票

我已经通过了如下的用户凭据,它就像一个魅力。

DirectoryEntry eLocation = new DirectoryEntry("LDAP://CN=Test User,OU=Users,OU=Development,DC=domain,DC=com", "domain\admin", "password");
DirectoryEntry nLocation = new DirectoryEntry("LDAP://OU=Users,OU=QC,DC=domain,DC=com", "domain\admin", "password");
eLocation.MoveTo(nLocation);
nLocation.Close();
eLocation.Close();

0
投票

如果您使用其他域中的其他服务器,则需要设置要移动对象的目标服务器的名称:

DirectoryEntry theObjectToMove = new DirectoryEntry("LDAP://otherdomain.com/CN=TestUser,CN=Users,DC=otherdomain,DC=com");
DirectoryEntry theNewParent = new DirectoryEntry("LDAP://otherdomain.com/OU=Something,DC=otherdomain,DC=com");
theObjectToMove.MoveTo(theNewParent);

0
投票

如果您使用新的 AccountManagement 命名空间,您可以通过以下方式实现相同的目的:

public void MoveUser(UserPrincipal user) {
    var userEntry = (DirectoryEntry) user.GetUnderlyingObject();
    var newOU = new DirectoryEntry("LDAP://OU=Users,OU=QC,DC=domain,DC=com", "domain\admin", "password");
    userEntry.MoveTo(newOU);
}

-1
投票

您不需要任何凭据即可通过 我做了以下事情

DirectoryEntry oDE= new DirectoryEntry(LDAP://" + "CN="xxx OU=xxxx,DC=xxxxxxx,DC=xxx");
DirectoryEntry de = new DirectoryEntry("LDAP://"+ "OU=xxxx,DC=xxxxxxx,DC=xxx");
oDE.MoveTo(de);
© www.soinside.com 2019 - 2024. All rights reserved.