我想使用 C# 将 Active Directory 用户从一个组织单位移动到另一个组织单位。
我已参考以下链接
并尝试了下面的代码,但它抛出错误
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'
我已经通过了如下的用户凭据,它就像一个魅力。
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();
如果您使用其他域中的其他服务器,则需要设置要移动对象的目标服务器的名称:
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);
如果您使用新的 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);
}
您不需要任何凭据即可通过 我做了以下事情
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);